ObservableCollection aktualisiert nicht die Ansicht

8

Ich beginne gerade mit MVVM und habe eine Hürde genommen, von der ich hoffe, dass mir jemand helfen kann. Ich versuche eine einfache Ansicht mit 2 Listenfeldern zu erstellen. Eine Auswahl aus der ersten Listbox füllt das zweite Listenfeld. Ich habe eine Klasse erstellt, die die Informationen speichert, an die ich binden möchte.

MyObject-Klasse (Observable Object ist nur eine Basisklasse, die INotifyPopertyChanged implementiert)

%Vor%

In meinem Viewmodel habe ich zwei ObservableCollections erstellt

%Vor%

In meinem Konstruktor des ViewModels habe ich:

%Vor%

Das funktioniert gut für die Elemente der Stufe 1 und sie werden korrekt in der Ansicht angezeigt. Allerdings habe ich einen Befehl, der aufgerufen wird, wenn der Benutzer auf ein Element in der Listbox klickt, die Folgendes enthält:

%Vor%

Aus irgendeinem Grund wird dadurch die Benutzeroberfläche der zweiten Listbox nicht aktualisiert. Wenn ich an dieser Stelle einen Haltepunkt platziere, kann ich sehen, dass Level2MenuItems die richtigen Informationen enthält. Wenn ich eine foreach-Schleife schreibe und sie einzeln zur Level2MenuItems-Sammlung hinzufüge, wird sie korrekt angezeigt.

Auch als Test habe ich dem Konstruktor folgendes hinzugefügt:

%Vor%

Und das wurde korrekt aktualisiert.

Warum funktioniert der Code also wie erwartet im Konstruktor oder beim Durchlaufen, aber nicht, wenn ein Benutzer auf ein Element in der Listbox klickt?

    
David Duncan 18.12.2011, 23:36
quelle

3 Antworten

6

Sie müssen die Änderungsbenachrichtigung für die Level2MenuItems -Eigenschaft auslösen.

Anstatt

zu haben %Vor%

brauchst du

%Vor%

Der Grund, warum der erste im Konstruktor funktioniert, ist, dass die Bindung noch nicht stattgefunden hat. Da Sie jedoch die Referenz über einen Befehl ändern, die nach der Bindung ausgeführt wird, müssen Sie die Änderung anzeigen

    
aqwert 18.12.2011, 23:38
quelle
1

Sie müssen Ihre poco-Klasse innerhalb der ObservableCollection implementieren INotifyPropertyChanged.

Beispiel:

%Vor%     
Scott Nimrod 09.04.2014 13:58
quelle
0

Ihre Subcategories -Eigenschaft sollte schreibgeschützt sein .

    
SLaks 18.12.2011 23:39
quelle

Tags und Links