c# - How can I bind this View to this ViewModel? -
SmartFormView उपयोगकर्ता नियंत्रण के लिए निम्न कोड-पीछे बाइंडिंग कार्य:
देखें: < / strong>
<कोड> & lt; UserControl x: कक्षा = "CodeGenerator.Views.PageItemManageSettingsView" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: एक्स = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns: v = "clr-नाम स्थान: CodeGenerator.Views" xmlns: वी एम = "clr-नाम स्थान: CodeGenerator.ViewModels" पृष्ठभूमि = "# ddd "& gt; & Lt; ग्रिड मार्जिन = "10" & gt; & Lt; ScrollViewer DockPanel.Dock = "Top" & gt; & Lt; स्टैकपैनेल मार्जिन = "10" & gt; & LT; वी: SmartFormView / & gt; & Lt; / StackPanel & gt; & Lt; / ScrollViewer & gt; & Lt; / ग्रिड & gt; & Lt; / UserControl & gt;
कोड-पीछे:
System.Windows.Controls का उपयोग कर; CodeGenerator.ViewModels का उपयोग कर; नाम स्थान CodeGenerator.दृश्य [सार्वजनिक आंशिक श्रेणी SmartFormView: UserControl {सार्वजनिक SmartFormView () {InitializeComponent (); DataContext = नया SmartFormViewModel ("परीक्षण"); }}}
हालांकि, मैं SmartFormView को अपने SmartFormViewModel को कॉलिंग व्यू में ViewModel में बाँधना चाहता हूं, कोड-पीछे में हार्ड कोड नहीं है फिर भी ये दो दृष्टिकोण बाध्य नहीं होते हैं:
& lt; UserControl.Resources & gt; & Lt; डेटाटाइमप्लेट डेटाटाइप = "{x: प्रकार वीएम: स्मार्टफ़ॉर्मविम मॉडल}" & gt; & LT; वी: SmartFormView / & gt; & Lt; / DataTemplate & gt; & LT; /UserControl.Resources> ... & lt; ग्रिड मार्जिन = "10" & gt; & Lt; ScrollViewer DockPanel.Dock = "Top" & gt; & Lt; स्टैकपैनेल मार्जिन = "10" & gt; & Lt; टेक्स्टब्लॉक टेक्स्ट = "{बाध्यकारी परीक्षण}" / & gt; & Lt; v: SmartFormView DataContext = "{बाध्यकारी SmartFormViewModel}" / & gt; & Lt; सामग्री कंट्रोल सामग्री = "{Binding SmartFormViewModel}" / & gt; & Lt; / StackPanel & gt; & Lt; / ScrollViewer & gt; & Lt; / ग्रिड & gt;
ViewModel में मैं "परीक्षण" और "SmartFormViewModel" ViewModel गुण के रूप में परिभाषित और (जैसा कि नीचे दिखाया गया है) उन दोनों को भरने, लेकिन है, हालांकि परीक्षण संपत्ति ठीक , SmartFormView के लिए बाध्य नहीं है इसके लिए SmartFormViewModel :
निजी SmartFormViewModel _smartFormViewModel =; सार्वजनिक SmartFormViewModel SmartFormViewModel {get {_smartFormViewModel; } सेट {_smartFormViewModel = value; OnPropertyChanged ( "SmartFormViewModel"); }} निजी स्ट्रिंग _टेटिंग; सार्वजनिक स्ट्रिंग परीक्षण {प्राप्त {रिटर्न _ परीक्षण; } सेट {_testing = value; OnPropertyChanged ( "परीक्षण"); }} सार्वजनिक PageItemManageSettingsViewModel (MainViewModel mainViewModel, PageItem pageItem): आधार (mainViewModel, pageItem) {SmartFormViewModel SmartFormViewModel = नए SmartFormViewModel ( "manageSettingsMain"); परीक्षण = "परीक्षण ठीक"; }
कॉलएन्ज व्यू मॉंडेल में एक विशिष्ट व्यू मॉडेल में यूज़र कंट्रोल को बाइंड करने के लिए वाक्यविन्यास क्या है?
गलत हो सकता है, लेकिन मुझे लगता है कि आप बस अपने कोड में एक बग है।
SmartFormViewModel SmartFormViewModel = नए SmartFormViewModel ( "manageSettingsMain");
होना चाहिए:
SmartFormViewModel = नया SmartFormViewModel ("प्रबंधन सेटिंगमैन"); अर्थात्
आपका SmartFormViewModel
कभी भी सेट नहीं किया जा रहा है । इसलिए, आपके माता-पिता के देखने में बाध्यकारी इसे नहीं मिलती है।
इसके अलावा, ऐसा करने का एक बेहतर तरीका सिर्फ अपने बच्चे को वीएम को दृश्य वृक्ष में छोडने के लिए है:
< पूर्व> & amp; सामग्री कंट्रोल सामग्री = "{Binding SmartFormViewModel}" / & gt;
और "हार्ड-कोडिंग" को देखने के लिए, um, पैरेंट व्यू में दृश्य के रिज़ॉल्यूशन को करने के लिए डेटाटामप्लेट का उपयोग करें।
Comments
Post a Comment