थोड़ा देर से शायद, लेकिन यह अन्य उपयोगकर्ताओं की मदद कर सकते हैं तो मैं वैसे भी पोस्ट करेंगे ...
एक PropertyChanged घटना के आधार पर CollectionView.Filter अपडेट किया जा रहा ढांचे द्वारा समर्थित नहीं है। इसके आसपास कई समाधान हैं।
1) आपके संग्रह के अंदर वस्तुओं पर IEDitableObject इंटरफ़ेस को कार्यान्वित करना, और फ़िल्टर पर आधारित संपत्ति को बदलते समय BeginEdit और EndEdit को कॉल करना। आप Dr.WPF उत्तम ब्लॉग यहाँ पर इस बारे में और अधिक पढ़ सकते हैं: Editable Collections by Dr.WPF
2) निम्नलिखित वर्ग बनाना और बदली हुई वस्तु पर RefreshFilter समारोह का उपयोग कर।
public class FilteredObservableCollection<T> : ObservableCollection<T>
{
public void RefreshFilter(T changedobject)
{
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, changedobject, changedobject));
}
}
उदाहरण:
public class TestClass : INotifyPropertyChanged
{
private string _TestProp;
public string TestProp
{
get{ return _TestProp; }
set
{
_TestProp = value;
RaisePropertyChanged("TestProp");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
var handler = this.PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
FilteredObservableCollection<TestClass> TestCollection = new FilteredObservableCollection<TestClass>();
void TestClass_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "TestProp":
TestCollection.RefreshFilter(sender as TestClass);
break;
}
}
TestClass वस्तु जब आप इसे बनाने के लिए, लेकिन मत भूलना eventhandler घृणाजनक जब वस्तु हटा दिया जाता है की PropertyChanged घटना के लिए सदस्यता लें, अन्यथा इस को जन्म दे सकती स्मृति लीक
या
TestClass में TestCollection सम्मिलित करें और TestProp सेटर अंदर RefreshFilter समारोह का उपयोग करें। किसी भी तरह, यहां जादू को NotifyCollectionChangedAction द्वारा काम किया जाता है। बदलें जो आइटम को पूरी तरह अद्यतन करता है।
स्रोत
2011-04-01 15:06:13
मामले में किसी को भी इस पाता है, यह अब पुराने हो चुके एक सा है। डब्ल्यूपीएफ 4.5 में, "लाइव" सॉर्टिंग, फ़िल्टरिंग और ग्रुपिंग की अनुमति देने के लिए नई सुविधाएं शामिल की गईं। देखें http://www.jonathanantoine.com/2011/10/05/wpf-4-5-%E2%80%93-part-10-live-shaping/ –