सं। FrameworkElement.DatatContext
निर्भरता संपत्ति है जो डेटा बाध्यकारी प्रकार object
प्रकार सक्षम करती है।
जैसा कि अन्य लोगों द्वारा इंगित किया गया है, आप DataContext
को DataTemplate
नामक विशेष टेम्पलेट के लिए अपेक्षित प्रकार निर्दिष्ट कर सकते हैं। ItemsControl
, ControlControl
जैसे कई नियंत्रण डेटा टेम्पलेट्स तक पहुंच प्रदान करते हैं ताकि आप डेटा कॉन्टेक्स्ट के प्रकार के दृश्य प्रतिनिधित्व की अपेक्षाओं को सेट कर सकें।
ब्रायन सही है, उसने अपने कोड का परीक्षण नहीं किया।
एक टाइप किया DataTemplate का सही आवेदन इस तरह दिखता है:
<Window>
<Window.Resources>
<DataTemplate x:Key="TypedTemplate" DataType="{x:Type myViewModel}">
...
</DataTemplate>
</Window.Resources>
<ContentControl Content="{Binding}" ContentTemplate="{StaticResource TypedTemplate}" />
</Window>
ContentPresenter FrameworkElement से सीधे विरासत और एक खाका संपत्ति नहीं है। इसके अलावा, टेम्पलेट प्रॉपर्टी आमतौर पर ControlTemplate के नियंत्रण। टेम्पलेट को संदर्भित करती है जो डेटा टेम्पलेट से बिल्कुल अलग है।
मुझे लगता है कि ब्रायन ContentControl
के बारे में सोच रहा था जो दो रूट नियंत्रण प्रकारों में से एक है (दूसरा ItemsControl
है)। ContentControl
वास्तव में नियंत्रण से प्राप्त होता है। इसलिए यदि हम चुनते हैं तो हम उस पर टेम्पलेट संपत्ति निर्दिष्ट कर सकते हैं।
<Window>
<Window.Resources>
<DataTemplate x:Key="TypedTemplate" DataType="{x:Type myViewModel}">
...
</DataTemplate>
<ControlTemplate x:Key="ControlSkin" TargetType="{x:Type ContentControl}">
...
</ControlTemplate>
</Window.Resources>
<ContentControl Content="{Binding}" ContentTemplate="{StaticResource TypedTemplate}" Template="{StaticResource ControlSkin}" />
</Window>
.NET 3.5 में डेटा टेम्पलेट नहीं है।TargetType संपत्ति –
@ ब्रायन आप सही हैं, यह डेटा टाइप है। मैंने कहा कि यह अवांछित था। मैंने त्रुटि को ठीक करने के लिए उत्तर अपडेट किया। –