Ich möchte ein Wörterbuch haben, das 'Observable' ist, um Ereignisse auszulösen, wenn sich das Element ändert (Entfernen oder Hinzufügen).Beobachtbares Wörterbuch verhält sich nicht wie erwartet
In anderen Klassen habe ich ein solches Wörterbuch erstellt und binde auf ListBox.ItemsSourseProperty
.
Die Bindung funktioniert gut. Ich kann die Gegenstände sehen.
Aber etwas stimmt nicht: das Ereignis PropertyChanged
immer Null.
Kann jemand helfen?
Vielen Dank im Voraus!
class ObservableDictionary<TKey, TValue> :
Dictionary<TKey, TValue>,
INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public new void Remove(TKey obj)
{
base.Remove(obj);
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Remove"));
}
}
}
ähnliche Frage: http://stackoverflow.com/questions/1098663/general-observable-dictionary-class-for-datathinding-wpf-c –
Seien Sie vorsichtig, wenn Sie das neue Schlüsselwort verwenden ... weil diese Methode nur sein wird Wird aufgerufen, wenn das Objekt auf ObservableDictionary beschränkt ist. Da der Großteil des Framework-Bindind-Modells es in IEnumerable umwandelt, ruft Add & Remove weiterhin die Downstream-Implementierung im Basiswörterbuch auf. Ich würde stattdessen Ihre Klasse als eine Wrapper-Klasse schreiben, die ein internes Dictionary für Speicher hat und dann die IDictionary & INotifyCollectionChanged-Schnittstellen und entsprechende Methoden implementieren. –
öffentliche Klasse Foo { public void Balken() { Console.WriteLine ("Test 1"); } } public class foo2: Foo { public neue Leere Bar() { Console.WriteLine ("Test 2"); } } var f = neu Foo2(); f.Bar(); ((Foo) f) .Bar(); Rückgabe Test 2 Test 1 –