Ich habe ein paar ListViews
, die auf den Inhalt von Dictionary<string,string>
s abhängen. Ich habe auch eine Funktion pro Wörterbuch für die Aktualisierung der zugehörigen ListView
. Diese müssen jedoch manuell aufgerufen werden und dies kann alle Arten von Problemen verursachen, wenn sie vergessen werden. Ist es möglich, eine Funktion aufzurufen, wenn ein Wert in einem Wörterbuch geändert wird?Funktion ausführen, wenn Wörterbuch Inhalt ändert
Meine ersten Gedanken waren zu verwenden DataBinding
, aber Listview
unterstützt dies nicht in WinForms
oder einige benutzerdefinierte Ereignisse zu erhöhen, aber ich würde nicht einmal wissen, wo ich damit anfangen soll.
Gibt es eine einfache Möglichkeit, dies zu erreichen?
Nur zur Klarstellung Ich spreche über etwas, das diesen Effekt hat:
Dictionary[key] = "this"; //Automatically runs UpdateDictionaryBox();
Dictionary.Add(key,value); //The same
Dictionary.Remove(key); //And again
So etwas wie ein ['ObservableDictionary'] (http://blogs.microsoft.co.il/shimmy/2010/12/26/observabledictionarylttkey-tvaluegt-c/)? –
Warum nicht 'DataGridView' verwenden, das an eine' BindingList 'gebunden ist, wo T' INotifyPropertyChanged' implementiert? –
Normalerweise können Sie solche Dinge durch Kapselung und einzelne Verantwortlichkeitsklassen vermeiden. Wenn Sie eine Klasse haben, die dieses Wörterbuch enthält, und das wäre privat, könnte niemand darauf zugreifen, außer dieser Klasse. Dann könnten Sie Eigenschaften/Methoden zum Ändern, Hinzufügen oder Entfernen von Elementen bereitstellen. Dies ist der einzige Ort, an dem Sie damit umgehen müssen, z. durch das Auslösen eines benutzerdefinierten Ereignisses, das bearbeitet werden kann, könnten Sie 'UpdateDictionaryBox' aufrufen –