Io e il mio collega stavamo discutendo su MVVM e su come gli elenchi e gli elementi selezionati dovrebbero essere archiviati in view / viewmodel.
Penso che il viewmodel dovrebbe solo offrire i dati e consentire alla vista di interpretarlo come gli piace. Potrebbe mostrarlo come una lista con un oggetto selezionato o potrebbe mostrarlo in modo completamente diverso.
Quindi penso che il viewmodel dovrebbe apparire così:
public class MajorVM
{
ObservableCollection<MinorVM> List
}
E la vista come questa:
<Grid>
<Listbox Key=ListBox Items=Binding DataContext.List />
<ContentControl Content=Binding ListBox.SelectedItem />
</Grid>
Il mio collega pensa che sto cambiando tra i contesti dei dati rendendo il codice di visualizzazione più difficile da seguire.
Il mio collega ritiene che il viewmodel dovrebbe contenere lo stato della vista e che ciò consentirà una più facile manipolazione della vista in futuro. Per esempio. controllare la selezione tramite il viewmodel.
Quindi sembrerebbe:
public class MajorVM
{
ObservableCollection<MinorVM> List
MinorVM SelectedItem
}
Con una vista simile a questa:
<Grid>
<Listbox Items=Binding DataContext.List />
<ContentControl Content=Binding DataContext.SelectedItem />
</Grid>
Per me questo non sembra corretto perché viewmodel ora ha una proprietà SelectedItem su di essa che non è menzionata in nessun'altra parte oltre alla vista. Si tratta di un'implementazione di visualizzazione su viewmodel.