2012-10-04 12 views
6

Ho una casella di riepilogo che contiene un elenco di persone. Quando l'utente fa clic su un oggetto, viewModel deve impostare l'oggetto currentPerson sull'oggetto su cui l'utente ha fatto clic.Evento modificato di selezione utilizzando MVVM

Devo usare un ViewModel per questo, quindi nessun codice all'interno di MainWindow.xaml.xs. Qualche idea di come si possa risolvere?

risposta

6

Questo è molto semplice:

aggiunge una proprietà CurrentPerson al vostro ViewModel e associarlo al SelectedItem proprietà del ListBox.

Qualcosa di simile a questo:

Vista Modello:

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

     NotifyOfPropertyChange("CurrentPerson"); 
    } 
} 

Vista:

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

+1: Io di solito si legano a SelectedValue però, mi ricordo che hanno problemi con la proprietà SelecteItem. –

+2

@Baboon: non è una buona idea. 'SelectedItem' è l'intero oggetto. 'SelectedValue' è la parte dell'oggetto definita da' SelectedValuePath'. Se hai avuto qualche problema con 'SelectedItem' in passato, probabilmente era qualcos'altro. 'SelectedItem' è definitivamente la proprietà corretta. –

+0

Ottimo lavoro, grazie! – Goot

Problemi correlati