मैं संग्रह में INotifyPropertyChanged
ऑब्जेक्ट्स पर किसी ईवेंट में हुक करने की कोशिश कर रहा हूं।संपत्ति का निरीक्षण करें संग्रह में वस्तुओं पर चेंज किया गया
हर जवाब है कि मैं कभी इस सवाल का देखा है इसे संभाल करने के लिए इस प्रकार कहा है:
void NotifyingItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if(e.NewItems != null)
{
foreach(INotifyPropertyChanged item in e.NewItems)
{
item.PropertyChanged += new PropertyChangedEventHandler(CollectionItemChanged);
}
}
if(e.OldItems != null)
{
foreach(ValidationMessageCollection item in e.OldItems)
{
item.PropertyChanged -= CollectionItemChanged;
}
}
}
मेरे समस्या यह है कि यह पूरी तरह से विफल रहता है जब भी एक डेवलपर कॉल NotifyingItems संग्रह पर Clear()
है। जब ऐसा होता है, तो इस ईवेंट हैंडलर को e.Action == Reset
और e.NewItems
और e.OldItems
null
के बराबर कहा जाता है (मैं उम्मीद करता हूं कि बाद वाले सभी आइटम शामिल हों)।
समस्या यह है कि वे आइटम नहीं चले जाते हैं, और वे नष्ट नहीं होते हैं, अब उन्हें वर्तमान वर्ग द्वारा निगरानी नहीं की जानी चाहिए - लेकिन जब से मुझे अपने PropertyChangedEventHandler
को अनैप करने का मौका कभी नहीं मिला - वे रहते हैं मेरी CollectionItemChanged
हैंडलर को कॉल करने के बाद भी मुझे नोटिफ़ाइंगइटम सूची से साफ़ कर दिया गया है। इस 'अच्छी तरह से स्थापित' पैटर्न के साथ ऐसी स्थिति को कैसे संभाला जाना चाहिए?
संभावित डुप्लिकेट [जब एक पर्यवेक्षण चयन समाशोधन, ई.ओल्डइटम में कोई आइटम नहीं है] (http://stackoverflow.com/questions/224155/when-clearing-an-observablecollection-here-are-no-items- इन-ए-olditems) – Rachel