Friday 15 August 2014

c# - Silverlight 3 - How to "refresh" a DataGrid content? -


मेरे पास निम्न दृश्यावली है:

  1 सिस्टम का उपयोग कर; 2 प्रणाली का उपयोग कर। 3 प्रणाली का उपयोग करते हुए। विन्डोज। नियंत्रण; 4 प्रणाली का उपयोग कर। विन्डोज़। दस्तावेज; 5 प्रणाली का उपयोग कर। Windows.Ink; 6 प्रणाली का उपयोग कर। विन्डोज़। इनपुट; 7 प्रणाली का उपयोग कर। विन्डोज़। मीडिया; 8 प्रणाली का प्रयोग कर.विंडोज.मीडिया.एनिमेशन; 9 प्रणाली का उपयोग कर.विंडो। आकार; 10 प्रणाली का उपयोग कर। Collections.Generic; 11 12 नाम स्थान रिफ्रेश 13 {14 सार्वजनिक आंशिक कक्षा मुख्य पृष्ठ: उपयोगकर्ता नियंत्रण 15 {16 17 सूची सी = नई सूची (); 18 19 सार्वजनिक मेनपेज () 20 {21 // चर को प्रारंभ करने के लिए आवश्यक 22 प्रारंभिक घटक (); 23 सी। जोड़ें (नया ग्राहक {_nome = "जोसीमारी", _idade = "29"}); 24 सी। जोड़ें (नया ग्राहक {_nome = "वेस्ले", _idade = "26"}); 25 सी। जोड़ें (नया ग्राहक {_nome = "Renato", _ idade = "31"}); 26 27 this.dtGrid.ItemsSource = c; 28} 29 30 निजी शून्य Button_Click (ऑब्जेक्ट प्रेषक, System.Windows.RoutedEventArgs ई) 31 {32 सी। जोड़ें (नया ग्राहक {_nome = "Maiara", _ idade = "18"}); 33} 34 35} 36 37 सार्वजनिक कक्षा ग्राहक 38 {39 सार्वजनिक स्ट्रिंग _nome {get; सेट;} 40 सार्वजनिक स्ट्रिंग _idade {get; सेट करें;} 41} 42}  

कहां है, dtGrid मेरा डेटाग्रिड नियंत्रण है ...

सवाल है: एक और रजिस्टर जोड़ने के बाद यूआई अपडेट कैसे किया जाए मेरी सूची में।

मुझे यह डेटाग्रिड के मद स्रोत को सेट करने और उसके बाद ग्राहक ऑब्जेक्ट की सूची को फिर से सेट करना हल करना है, जैसे:

  1 निजी शून्य Button_Click (ऑब्जेक्ट प्रेषक, System.Windows.RoutedEventArgs ई) 2 3 {4 5 सी। जोड़ें (नया ग्राहक {_nome = "Maiara", _ idade = "18"}); 6 7 this.dtGrid.ItemsSource = ""; 8 9 this.dtGrid.ItemsSource = c; 10 11} 12  

क्या यूआई अद्यतन या डीटग्रिड के आइटम्स को प्राप्त करने का कोई तरीका है? स्रोत से अद्यतन, फेरबदल या एक आइटम को हटाने के बाद स्वचालित रूप से पुनर्संचित स्रोत?

धन्यवाद,

जोशीमारी Martarelli

मैं बाध्यकारी, INotifyPropertyChanged, DataContexts और अवलोकनकॉल्क्शन।

  1. अपनी सूची को एक ObsavableCollection में बदलें। अकेले ही आपकी समस्याओं में से कुछ को हल कर देगा ... एक ObsavableCollection के रूप में एक सरल सूची

  2. < P> लेकिन, अगर आप इस तरह से और अधिक समस्याओं को हल करना चाहते हैं, तो आप अपने DataGrid को अपने ऑब्जेक्ट की सूची में Xaml और lt; DataGrid के माध्यम से बाध्य करने के लिए देखेंगे ... ItemsSource = "{बाध्यकारी MyList } "

  3. अपने DataGrid को अपने सूची में बाँटने के लिए, आपको दृश्य के DataContext सेट करें यह आपके कन्स्ट्रक्टर में रखने के रूप में एक सरल हो सकता है: this.DataContext = this; अपने DataContext को सेट करने से पता चलता है कि डेटा देखने के लिए कहां है बाइंडिंग < / Code> बयान

  4. उसके बाद, आपके पास एक जैसी समस्याएं हल करने के लिए (कुछ बदलना दृश्य को ताज़ा नहीं करता), आप INotifyPropertyChanged आपकी कक्षा में इंटरफ़ेस।

यह सी # कोड है जो इसे कार्यान्वित करेगा:

  सार्वजनिक आंशिक कक्षा मुख्य पृष्ठ: उपयोगकर्ता नियंत्रण, INotifyPropertyChanged {निजी पर्यवेक्षण कलेक्शन & lt; ग्राहक & gt; _MyList = नया निरीक्षणीय चयन & lt; ग्राहक & gt; (); सार्वजनिक पर्यवेक्षण योग्यता & lt; ग्राहक & gt; मिलिस्ट {प्राप्त करें (वापसी _ मैललिस्ट; }} सार्वजनिक मेनपेज () {InitializeComponent (); यह। DataContext = यह; MyList.Add (नया ग्राहक {_nome = "जोसीमारी", _idade = "29"}); MyList.Add (नया ग्राहक {_nome = "वेस्ले", _idade = "26"}); MyList.Add (नया ग्राहक {_nome = "Renato", _ idade = "31"}); OnPropertyChanged ( "MyList"); // यदि आप बाइंडिंग का उपयोग करते हैं तो यह केवल तभी काम करता है } निजी शून्य Button_Click (ऑब्जेक्ट प्रेषक, System.Windows.RoutedEventArgs ई) {MyList.Add (नया ग्राहक {_nome = "Maiara", _ idade = "18"}); OnPropertyChanged ( "MyList"); // यदि आप बाइंडिंग का उपयोग करते हैं तो यह केवल तभी काम करता है } सार्वजनिक इवेंट PropertyChangedEventHandler PropertyChanged; संरक्षित शून्य OnPropertyChanged (स्ट्रिंग propertyName) {यदि (PropertyChanged! = नल) {PropertyChanged (यह, नई PropertyChangedEventArgs (propertyName)); }}}  
पर क्लिक करें

No comments:

Post a Comment