2012-10-04 11 views
6

Ich habe eine Listbox, die eine Liste von Personen enthält. Wenn der Benutzer auf ein Element klickt, sollte das viewModel das Objekt currentPerson auf das Objekt festlegen, auf das der Benutzer geklickt hat.Auswahl geändert Ereignis mit MVVM

Ich muss ein ViewModel dafür verwenden, also kein Code innerhalb der MainWindow.xaml.xs. Irgendwelche Ideen, wie man das löst?

Antwort

6

, die sehr einfach ist:

eine Eigenschaft hinzufügen CurrentPerson zu Ihrem Viewmodel und binden Sie es an die SelectedItem Eigenschaft der List-Box.

Etwas wie folgt aus:

Ansicht Modell:

public Person CurrentPerson 
{ 
    get { return _currentPerson; } 
    set 
    { 
     if(value == _currentPerson) return; 
     _currentPerson = value; 

     NotifyOfPropertyChange("CurrentPerson"); 
    } 
} 

Ausblick:

<ListBox SelectedItem="{Binding CurrentPerson}" ...> 
+0

+1: Ich in der Regel zu SelectedValue binden aber ich erinnere mich, die Probleme mit dem SelecteItem Eigenschaft. –

+2

@Baboon: Das ist keine gute Idee. 'SelectedItem' ist das gesamte Objekt. 'SelectedValue' ist der Teil des Objekts, der durch' SelectedValuePath' definiert ist. Wenn Sie in der Vergangenheit einige Probleme mit SelectedItem hatten, war das höchstwahrscheinlich etwas anderes. 'SelectedItem' ist definitiv die richtige Eigenschaft. –

+0

Funktioniert gut, danke! – Goot

Verwandte Themen