Die Umsetzung BindingList<T>
Ich versuche zu lernen, mehr über BindingList, weil ich glaube, dass es mir helfen wird, mich mit einem Projekt, an dem ich arbeite.
Derzeit habe ich ein Objekt der Klasse (ScannedImage), dass ein Untertyp einer Klasse (HashedImage) Subtypen native .Net-Objekt (Bild). Es gibt keinen Grund, warum ich konnte mich nicht bewegen der zwei Subtypen zusammen. Ich bin einfach subtypisierung ein Objekt, das hatte ich zuvor gebaut, aber werde ich jetzt auch Speicherung meiner ScannedImage Objekt in einer Wiederherstellungsdatenbank (gut, nicht technisch gesehen, nur die details und vermutlich das thumbnail).
Auch, die object-Klasse hat member-Typen, die meine eigene benutzerdefinierte Typen (Keywords). Ich bin mit einem benutzerdefinierten datagridview, um diese Objekte, bin aber die Handhabung aller änderungen an der ScannedImage Objekt mit meinem eigenen code. Wie Sie sich wahrscheinlich vorstellen können, habe ich schon ein paar Ereignisse zu behandeln, die auftreten, in diesen Basistypen.
So, wenn ich meine geänderte Objekt, die INotifyPropertyChanged implementieren, würde der object collection (Umsetzung der BindingList) erhalten Benachrichtigungen über änderungen an der ScannedImage Objekt?
Auch, wenn die Schlüsselworte waren die INotifyPropertyChanged implementieren, würden änderungen zugänglich sein, um die BindingList durch die ScannedImage Objekt?
Sorry, wenn dies scheint eher newbish. Ich erst vor kurzem entdeckt die BindingList und nicht mit der Ausbildung in C# zu Programmieren - ich habe eine schwierige Zeit, die uns vorwärts bewegen mit dieser.
Auch, wenn jemand keine gute Referenz material, wäre ich dankbar für links. Offensichtlich, ich habe schon durchgelesen auf der MSDN-Bibliothek. Ich habe ein paar gute links im web, aber es scheint, dass eine Menge Leute sind jetzt mit WPF und ObservableCollection.
Mein Projekt basiert auf Winforms und .Net3.5 Rahmen.
TIA
- Sind Sie richtig. Der Titel sollte "die Implementierung von IBindingList" oder vielmehr, wie haben Sie darauf hingewiesen, (dass ich) "Mit BindingList<T> mit meinem Objekt-Klasse, die implementiert INotifyPropertChanged"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werde ich die Antwort auf beide deiner Fragen:
Wenn Sie tatsächlich mit dem
BindingList<T>
Klasse inSystem.ComponentModel
, dann macht es besonderen-Fall-code für Elemente, die impelmentINotifyPropertyChanged
. Die Liste wird finden Sie unter die Eigenschaft ändert und wird senden von Benachrichtigungen.Jedoch, Sie ausdrücklich bitten, über die "Umsetzung der BindingList", die subtil anders. Sie können nicht implementieren eine Klasse. Aber es ist eine Schnittstelle,
IBindingList
, dass Sie kann implementieren, die mit Ihrer eigenen Klasse, und wenn dies der Weg Sie wählen zu nehmen, dann wird es Ihre Verantwortung, wenn Sie schreiben, die Liste Klasse, um sicherzustellen, dass Ihr monitor für die änderung der Eigenschaft Benachrichtigungen.In der Regel sollten Sie nicht brauchen, um Ihre eigenen erstellen
IBindingList
Umsetzung; verwenden SieBindingList<T>
zu wickeln, eine vorhandene Liste und du wirst in Ordnung sein.Nein, Sie will nicht.
BindingList<T>
sieht nur die bestimmten Objekt in der Liste, es hat keine Möglichkeit, die Suche auf alle Abhängigkeiten und überwachen alles, was in der Grafik (wäre noch, dass immer eine gute Idee, wenn es möglich wäre).Was müssen Sie tun, wenn Sie wollen, um Benachrichtigungen zu erhalten, ist aktualisieren Sie Ihre
ScannedImage
- Klasse-check für Immobilien-änderungsbenachrichtigungen von derKeywords
Objekt, dann Feuer seiner eigenenPropertyChanged
Ereignis in der Antwort.Beispiel:
Ich hoffe, Sie verstehen, was gemacht wird, hier. Der Besitzer,
ScannedImage
automatisch der HakenPropertyChanged
Ereignis von seiner innerenKeywords
Klasse und wirft eine eigene property-changed-Ereignis zu sagen, dass dieKeywords
geändert haben. Auf diese Weise, verbindliche Listen und andere Daten binden von Steuerelementen wird eine Benachrichtigung erhalten, wenn die keywords sich ändern.+= KeywordsChanged
Zeile wird das Ereignis ausgelöst? Nicht, ist es nur Drähte bis ein Ereignis-handler für die Eigenschaften dieKeywords
ändern (bestimmt durch die Klassen der eigenen Implementierung der Eigenschaft ein change-Ereignis). Die gesamte Struktur ist speziell für eine veränderlichKeywords
Klasse, hat seine eigenePropertyChanged
Veranstaltung.