c# - Change datatemplate of contentcontrol on change of datacontext property -
मेरे पास एक contentcontrol
है जो ऑब्जेक्ट ( डेटा
उदाहरण में डेटाकॉन्टेक्स्ट की संपत्ति) जब भी डेटा
परिवर्तनों से संदर्भित ऑब्जेक्ट, मैं datatemplate
का पुनः चयन करना चाहता हूं मैं यह कैसे कर सकता हूं?
& amp; lt; सामग्री कंट्रोल का नाम = "रूटडेटा" सामग्री = "{बाध्यकारी डेटा}" सामग्रीटैंपलेट चयनकर्ता = "{StaticResource myTemplateSelector}" / & gt;
यदि आप संपूर्ण डेटा प्रकार को बदल रहे हैं तो आपका दृश्य नीचे दिया जाना चाहिए, केवल अंतर कुंजी को निकाल रहा है और डेटाटाइप के लिए डेटाटाइप का उपयोग कर रहा है, इसे अंतर्निहित डाटा टेम्प्लेट कहा जाता है
& lt; विंडो x: कक्षा = "टेक्स्टबॉइडफ़ॉर्मेटिंग। मैनविंडो" xmlns = "http://schemas.microsoft.com / Winfx / 2006 / xaml / प्रस्तुति "xmlns: x =" http://schemas.microsoft.com/winfx/2006/xaml "xmlns: स्थानीय =" clr-namespace: टेक्स्टबैंगफ़ॉर्मेटिंग "xmlns: viewModels =" clr-namespace: टेक्स्टबैंडिंगफ़ॉर्मेटिंग। व्यू मॉडेल "शीर्षक =" मुख्य विंडो "ऊंचाई =" 350 "चौड़ाई =" 555 "& gt; & LT; Window.Resources & gt; & Lt; स्थानीय: MyTemplateSelector x: कुंजी = "MyTemplateSelector" & gt; & lt; / स्थानीय: MyTemplateSelector & gt; & Lt; DataTemplate DataType = "{x: प्रकार दृश्य मॉडेल्स: छात्र}" & gt; & Lt; स्टैकपैनेल ओरिएंटेशन = "क्षैतिज" & gt; & LT; लेबल & gt; ईद & lt; / लेबल & gt; & Lt; टेक्स्टब्लॉक टेक्स्ट = "{बाध्यकारी आईडी}" & gt; & lt; / TextBlock & gt; & LT; लेबल & gt; नाम & lt; / लेबल & gt; & Lt; टेक्स्टब्लॉक टेक्स्ट = "{बाध्यकारी नाम}" & gt; & lt; / TextBlock & gt; & LT; / StackPanel & gt; & Lt; / DataTemplate & gt; & Lt; DataTemplate DataType = "{x: प्रकार स्थानीय: जनक}" & gt; & Lt; स्टैकपैनेल ओरिएंटेशन = "लंबवत" & gt; & LT; लेबल & gt; नाम & lt; / लेबल & gt; & Lt; टेक्स्टब्लॉक टेक्स्ट = "{बाध्यकारी नाम}" & gt; & lt; / TextBlock & gt; & LT; / StackPanel & gt; & Lt; / DataTemplate & gt; & LT; /Window.Resources> & LT; ग्रिड & gt; & LT; StackPanel & gt; & Lt; सामग्री कंट्रोल सामग्री = "{बाध्यकारी डेटा}" & gt; & Lt; / ContentControl & gt; & Lt; बटन सामग्री = "डाटाटाइमेट बदलें" क्लिक = "बटनबसे_ऑनक्लिक" & gt; & lt; / button & gt; & LT; / StackPanel & gt; & Lt; / ग्रिड & gt;
कोड के पीछे
सार्वजनिक आंशिक वर्ग मुख्य विंडो: विंडो {सार्वजनिक MainWindow () {InitializeComponent (); यह। डेटाकॉन्टेक्स्ट = नया मुख्य विंडूवमॉडल () {डेटा = नए छात्र {आईडी = 1, नाम = "छात्र"}}; } निजी शून्य ButtonBase_OnClick (ऑब्जेक्ट प्रेषक, RoutedEventArgs ई) {var vm = this.DataContext MainWindowViewModel; Vm.Data = नया माता-पिता () {नाम = "यह माता पिता है"}; }}
मेरे पास निम्न के रूप में दो कक्षाएं हैं
सार्वजनिक कक्षा छात्र: INotifyPropertyChanged {निजी स्ट्रिंग _name; निजी आईएनआईडी; सार्वजनिक इवेंट संपुआ चेंजेडएवेंटहैंडलर सम्पत्ति परिवर्तित; [NotifyPropertyChangedInvocator] संरक्षित आभासी शून्य OnPropertyChanged (स्ट्रिंग propertyName) {PropertyChangedEventHandler हैंडलर = PropertyChanged; अगर (हैंडलर! = नल) हैंडलर (यह, नया प्रॉपर्टी चेंजेड ईवेंटअर्ज (गुणनाम)); } सार्वजनिक स्ट्रिंग नाम {get {return _name; } सेट {_name = value; OnPropertyChanged ( "नाम"); }} सार्वजनिक इंट आईडी {get {return _id; } सेट {_id = value; OnPropertyChanged ( "आईडी"); }}}
और दूसरा
सार्वजनिक वर्ग अभिभावक: INotifyPropertyChanged {निजी स्ट्रिंग _name; सार्वजनिक इवेंट संपुआ चेंजेडएवेंटहैंडलर सम्पत्ति परिवर्तित; [NotifyPropertyChangedInvocator] संरक्षित आभासी शून्य OnPropertyChanged (स्ट्रिंग propertyName) {PropertyChangedEventHandler हैंडलर = PropertyChanged; अगर (हैंडलर! = नल) हैंडलर (यह, नया प्रॉपर्टी चेंजेड ईवेंटअर्ज (गुणनाम)); } सार्वजनिक स्ट्रिंग नाम {get {return _name; } सेट {_name = value; OnPropertyChanged ( "नाम"); }}}
Comments
Post a Comment