के साथ सही ढंग से अपडेट नहीं किया गया है मैं वर्तमान में एक सूची दृश्य के लिए अपनी डेटा ऑब्जेक्ट्स को स्टोर करने के लिए एक अवलोकन संग्रह का उपयोग कर रहा हूं। संग्रह में नई ऑब्जेक्ट्स जोड़ना ठीक काम करता है, और सूची ठीक से अद्यतन देखें। हालांकि जब मैं संग्रह में किसी ऑब्जेक्ट के गुणों में से किसी एक को बदलने का प्रयास करता हूं तो सूची दृश्य ठीक से अपडेट नहीं होगा। उदाहरण के लिए, मेरे पास एक अवलोकन संग्रह डेटाकोलेक्शन है। मैंListView ObservableCollection
_DataCollections.ElementAt(count).Status = "Active";
बटन बटन के कारण मैं लंबे ऑपरेशन से पहले इस बदलाव को निष्पादित करता हूं। सूची दृश्य परिवर्तन को प्रतिबिंबित नहीं करेगा। तो मैं myListView.Items.Refresh()
जोड़ता हूं; यह काम करता है, हालांकि सूची दृश्य को बटन_क्लिक विधि पूर्ण होने तक रीफ्रेश नहीं किया जाता है, जो तब तक अच्छा नहीं है। उदाहरण के लिए:
button1_Click(...)
{
_DataCollections.ElementAt(count).Status = "Active";
myListView.Items.Refresh();
ExecuteLongOperation();
_DataCollections.ElementAt(count).Status = "Finished";
myListView.Items.Refresh();
}
स्थिति "सक्रिय" गोटो कभी नहीं होगा, यह सीधे जाना होगा "समाप्त" करने के बाद विधि पूरा करती है। मैं भी इस तरह एक डिस्पैचर उपयोग करने की कोशिश:
button1_Click(...)
{
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Active"; myListView.Items.Refresh(); });
ExecuteLongOperation();
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
(NoArgDelegate)delegate { _DataCollection.ElementAt(count).Status = "Finished"; myListView.Items.Refresh(); });
}
हालांकि, कि या तो सही ढंग से काम करने के लिए प्रतीत नहीं होता। किसी भी सुझाव या विचारों की सराहना की जाएगी।
मुझे Effecting_PropertyChanged विधि के सही कार्यान्वयन को खोजने के लिए लंबे समय की आवश्यकता है .. आपको केवल एक पंक्ति की आवश्यकता है: 'MyBase.OnCollectionChanged (नया NotifyCollectionChangedEventArgs (NotifyCollectionChangedAction.Reset))' और मैं InsertItem को ओवरराइट करने और ObservableCollection के निकालने के लिए अनुशंसा करता हूं, क्योंकि SetItem didn मेरे लिए काम नहीं करता –
@ फ़ेलिक्स, हाँ, इसके लिए और भी कुछ था। कक्षा कार्यान्वयन 800 से अधिक लाइनों है। मैंने कहा था कि मैंने आंशिक कोड पोस्ट किया था, मुख्य रूप से सामान्य विचार देने के लिए। –
मैंने इसे अन्य लोगों के लिए लिखा है जो इस पोस्ट को ढूंढते हैं और यह नहीं जानते कि इस कोड लाइन को कैसे कार्यान्वित किया जाए। यह सुधार नहीं था, यह काम करने के लिए सिर्फ एक विस्तार है। :) लेकिन आपकी कक्षा की लंबाई 800 लाइनों क्यों है? मैं वास्तव में आपके पूर्ण वर्ग कार्यान्वयन को देखने का आनंद लेता हूं। –