Wie bereits beantwortet, haben Sie zwei Möglichkeiten: Sie können entweder ReadOnlyObservableCollection<T>
die Schnittstelle in die Schnittstelle umwandeln, INotifyCollectionChanged
um auf das explizit implementierte CollectionChanged
Ereignis zuzugreifen , oder Sie können eine eigene Wrapper-Klasse erstellen, die dies einmal im Konstruktor ausführt und nur die Ereignisse des Wraps verknüpft ReadOnlyObservableCollection<T>
.
Einige zusätzliche Einblicke, warum dieses Problem noch nicht behoben wurde:
Wie Sie dem Quellcode entnehmen können , ReadOnlyObservableCollection<T>
handelt es sich um eine öffentliche, nicht versiegelte (dh vererbbare) Klasse, in der die Ereignisse markiert sind protected virtual
.
Das heißt, es gibt möglicherweise kompilierte Programme mit Klassen, von denen abgeleitet wurde ReadOnlyObservableCollection<T>
, mit überschriebenen Ereignisdefinitionen, aber protected
Sichtbarkeit. Diese Programme würden ungültigen Code enthalten, sobald die public
Sichtbarkeit des Ereignisses in der Basisklasse geändert wird , da die Sichtbarkeit eines Ereignisses in abgeleiteten Klassen nicht eingeschränkt werden darf.
Leider ist das spätere Erstellen von protected virtual
Ereignissen public
eine binäre Änderung, und daher wird dies nicht ohne sehr gute Argumentation geschehen, was ich befürchte, "Ich muss das Objekt einmal umsetzen, um Handler anzuhängen", einfach nicht.
Quelle: GitHub-Kommentar von Nick Guererra, 19. August 2015