Binding In Binding with Templates(WPF) -


मेरे पास AwesomeClass के संग्रह में एक WPF UI बाध्य है

अब, AwesomeClass में AwesomeParts का एक संग्रह है ऑब्जेक्ट्स।

कैसे मैं अपने यूआई को इस तरह बना सकता हूं कि प्रत्येक AwesomeClass इंस्टेंस के लिए (उदाहरण के तौर पर)
एक टैब पैनल पर एक टैब है और उसके बाद प्रत्येक भयानक भाग के लिए,

असल में: Awesomes-> टैब

और फिर: Awesome.Awesomeparts-> Tabs.Listbox

निम्न करने के लिए कोड है जिसे आप ढूंढ रहे हैं:

  सार्वजनिक आंशिक वर्ग टैबविंडो: विंडो {सार्वजनिक टैबविंडो () {इनिशियलाइज़ कम्पेनेंट (); सूची के & lt; AwesomeClass & gt; आइटम = नई सूची & lt; AwesomeClass & gt; (); (इंट आई = 0; आई & lt; 10; i ++) के लिए {items.Add (नया AwesomeClass ()); } AwesomeTabs.ItemsSource = आइटम; लोड किया + = नया रूटिंग एवेंटहैंडलर (टैबवंडो_लोडेड); } // विधि 1 शून्य TabWindow_Loaded (ऑब्जेक्ट प्रेषक, RoutedEventArgs ई) {FindListBox (AwesomeTabs); } निजी शून्य FindListBox (निर्भरता ऑब्जेक्ट obj) {Int32 count = VisualTreeHelper.GetChildrenCount (obj); के लिए (इंट I = 0; i & lt; count; i ++) {var बच्चे = विज़ुअलट्रीहेल्पर.गेट चाल्ड (ओबीजे, आई); अगर (बच्ची सूचीबॉक्स है) {(बच्चे को सूचीबॉक्स के रूप में)। चयन चयनित + = नया चयन चेंजेडएवेंटहैंडलर (सूचीबॉक्सेज़ सिलेक्शन बदल); } Else {FindListBox (बच्चा); }}} // विधि 2 निजी शून्य ListBox_Loaded (ऑब्जेक्ट प्रेषक, RoutedEventArgs ई) {(लिस्ट बॉक्स के रूप में प्रेषक)। चयन चयनित + = नए चयन चेंजेडएवेंटहैंडलर (ListBox_SelectionChanged); } शून्य सूचीबॉक्सेज़ चयन (चेंजेड ऑब्जेक्ट प्रेषक, सिलेक्ट चेंजेड ईवेंटअर्गेस ई) {try {messagebox.Show (e.addedItems [0] .ओस्ट्रिंग ()); } पकड़ (अपवाद) {}}} कक्षा AwesomeClass {स्थिर इंट्रोस गणना = 0; सार्वजनिक Int32 सूचकांक {प्राप्त; सेट; } सार्वजनिक सूची & amp;; AwesomePart & gt; पार्ट्स {प्राप्त; संरक्षित सेट; } // विधि 3: पसंदीदा निजी AwesomePart _selectedPart; सार्वजनिक AwesomePart चयनितपार्ट {get {return_selectedPart; } सेट {ऑनसचयन चेंजेड (_selectedPart, value); _selectedPart = मान; }} निजी शून्य ऑन-ऑन चैलेंज (AwesomePart oldValue, AwesomePart newValue) {यदि (newValue! = Null) MessageBox.Show (newValue.ToString ()); } सार्वजनिक AwesomeClass () {अनुक्रमणिका = ++ गणना; पार्ट्स = नई सूची & lt; AwesomePart & gt; (); (इंट आई = 0; आई & lt; 10; i ++) के लिए {parts.Add (नया AwesomePart ()); }} सार्वजनिक ओवरराइड स्ट्रिंग टूस्ट्रिंग () {वापसी "टैब #" + अनुक्रमणिका.ToString (); }} वर्ग AwesomePart {static Int32 count = 0; सार्वजनिक Int32 सूचकांक {प्राप्त; सेट; } सार्वजनिक AwesomePart () {अनुक्रमणिका = ++ गणना; } सार्वजनिक ओवरराइड स्ट्रिंग टूस्ट्रिंग () {वापसी "भाग #" + अनुक्रमणिका.ToString (); }}  

एक्सएएमएल:

  & lt; ग्रिड & gt; & Lt; TabControl नाम = "AwesomeTabs" & gt; & LT; TabControl.ContentTemplate & gt; & LT; DataTemplate & gt; & Lt; ListBox ItemsSource = "{बाध्यकारी पार्ट्स}" चुने गए IITem = "{बाध्यकारी चयनित पृष्ठ}" लोडेड = "लिस्टब्लॉक्स_लोडेड" & gt; & lt; / ListBox & gt; & Lt; / DataTemplate & gt; & LT; /TabControl.ContentTemplate> & Lt; / TabControl & gt; & Lt; / ग्रिड & gt;  

Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -