2012-10-04 14 views
6

Tengo un listbox que contiene una lista de personas. Cuando el usuario hace clic en un elemento, viewModel debe establecer el objeto actualPerson al objeto en el que el usuario ha hecho clic.Evento de selección modificada utilizando MVVM

Tengo que usar un ViewModel para esto, así que no hay código dentro de MainWindow.xaml.xs. ¿Alguna idea de como resolver esto?

Respuesta

6

Eso es muy simple:

añadir un alojamiento CurrentPerson a su modelo de vista y enlazarlo a la propiedad SelectedItem del ListBox.

Algo como esto:

Ver Modelo:

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

     NotifyOfPropertyChange("CurrentPerson"); 
    } 
} 

Vista:

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

+1: Normalmente se unen a SelectedValue embargo, recuerdo haber tenido problemas con la propiedad SelecteItem. –

+2

@Baboon: Esa no es una buena idea. 'SelectedItem' es el objeto completo. 'SelectedValue' es la parte del objeto definida por' SelectedValuePath'. Si tuviste algunos problemas con 'SelectedItem' en el pasado, probablemente era otra cosa. 'SelectedItem' definitivamente es la propiedad correcta. –

+0

¡Funciona muy bien, gracias! – Goot

Cuestiones relacionadas