2009-03-22 7 views
0

Ich habe zwei Listboxen eins mit allen Projekten und eins mit nur aktiven Projekten.ViewModel Collection Bindungen in Silverlight

Ich habe eine ObservableCollection mit allen meinen Projekten darin gebunden an die Listbox mit allen Projekten. Was binde ich an die andere Listbox? Muss ich eine neue Sammlung erstellen und die aktiven sortieren? Und wenn ich ein neues aktives Projekt hinzufüge, muss ich beide Sammlungen hinzufügen.

Das Verhalten Ich suche ein neues Projekt für die Sammlung mit allen Projekten, so dass beide Listboxen aktualisiert werden. Ist es möglich, so etwas zu tun?

Antwort

3

Wenn Sie zwei Sammlungen haben, können Sie das CollectionChanged-Ereignis für die Master-Sammlung abonnieren und die Benachrichtigungen verwenden, um die andere Liste zu synchronisieren.

+0

Bitte geben Sie mir ein Beispiel? –

2

sollten Sie in der Lage sein, dies mit einem CollectionView auszuführen. CollectionView kapselt Sortierung und Filterung ein.

Wenn Sie eine CollectionView erstellen, die inaktive Projekte in Ihrer Hauptsammlung ausfiltert und die zweite Liste an diese Ansicht bindet, sollten Sie in diesem Fall gut sein.

EDIT: Wenn ich nur den vollständigen Titel gelesen und realisierte, dass er über Silverlight sprach ... Silverlight hat keine öffentliche Implementierung von ICollectionView, noch eine CollectionViewSource, und nur das Datagrid nutzt die Schnittstelle trotzdem. Wer auch immer abgestimmt hat, sollte das bitte abbrechen, das ist keine gute Antwort auf die Frage.

Zurück zum Zeichenbrett, denke ich. Im Moment würde ich sagen, ich hätte zwei Sammlungen und höre die Ereignisse auf der ersten (die volle) zu - hinzufügen/entfernen von der zweiten, wenn ein aktives Element hinzugefügt/entfernt wird - Hinzufügen/Entfernen einer PropertyChanged Handler für die hinzugefügten/entfernten Elemente und - hinzufügen/entfernen zu/von der zweiten Sammlung, wenn die Active-Eigenschaft geändert wurde. Es ist unordentlich, aber es ist möglicherweise genug Paketable, um es wiederzuverwenden, wenn Sie eine Sammlung benötigen, die durch ein Prädikat gefiltert wird.

+0

Es gibt keine CollectionViewSource, um die CollectionView in Silverlight zu installieren. –

+0

Ja, das habe ich gerade erkannt. Ich vermisste den Teil des Titels (die großen Buchstaben an der Spitze ...), der "silverlight" sagte. Das tut mir leid. –

0

Ich würde zwei Sammlungen verwenden, die Master-Liste und die Liste der aktiven Projekte. Dann abonnieren Sie das collection changed Ereignis auf der Hauptliste, alle müssen Sie actions

Neben der Handhabung ein Ereignis in das Projekt-Objekt hinzuzufügen, so dass Sie die Gelegenheit umgehen konnten, wenn das Projekt aus aktiv wird inaktiv und umge Umgekehrt, da das Sammlungsänderungsereignis nur dann ausgelöst wird, wenn sich die Sammlung nicht ändert, wenn etwas darin Änderungen enthält.