2009-05-29 4 views
2

Ich bin mir sicher, dass das schon mal aufgetaucht ist, aber ich konnte die Antwort nicht finden.Wie wird das SelectedItem eines TreeViews und ListBox synchronisiert?

Ich habe ein grundlegendes ViewModel erstellt, das eine Liste von Personen (ein Array von Person) mit einer Eigenschaft namens SelectedPerson enthält, die natürlich auf die aktuell ausgewählte Person in der Personenliste zeigt. Ich habe auch eine ListBox und eine TreeView, die mit der ViewModel-Personenliste verbunden sind.

Was ich tun möchte, ist SelectedItem SelectedValue und TreeView SelectedItem der ListBox synchron mit SelectionPerson des ViewModel zu halten. Die Idee ist, dass, egal wie die SelectedPerson geändert wird (durch ein Steuerelement, durch Code usw.), alle Steuerelemente sich selbst korrekt aktualisieren sollten. Ich kann es mit zwei ListBoxen arbeiten, was nett ist, aber ich kann es nicht mit einer ListBox und einer TreeView arbeiten, weil das SelectedItem der TreeView schreibgeschützt und anscheinend nicht verfügbar über XAML ist.

Wo sollte ich nach Ideen suchen, wie das funktioniert?

Beachten Sie auch, dass ich versuche, dies in reinem XAML zu arbeiten. Kein Code-Behind, da XAML-Dateien in meiner Anwendung dynamisch geladen und geändert werden können.

Danke!

Antwort

2

Sie können Selector.IsSyncronizedWithCurrentItem verwenden.

Sie können sowohl Thye-Listbox als auch Treeview an die gleiche Datenquelle binden und sicherstellen, dass der IsSycronized-Parameter auf True gesetzt ist. Dann werden alle Änderungen an dem aktuellen Element in dem einen Element in dem anderen reflektiert.

Weitere Informationen finden Sie hier:

link text

+1

Hallo Midas! Ich habe Ihren Vorschlag geprüft, aber es sieht so aus, als ob TreeView diese Eigenschaft nicht besitzt. – djcouchycouch