Secondo il modello MVVM:
- The View sa circa il ViewModel - avrà un riferimento ad esso sia come un esempio concreto o un'interfaccia
- Il ViewModel non dovrebbe sapere la vista a tutti.
Se è necessario per gestire gli eventi, poi ci sono due modi, che io conosco per farlo:
1: esporre un comando nel ViewModel, e utilizzare l'associazione dati per innescare esso. Questo è il mio modo preferito, ad esempio:
class MyViewModel
{
public ICommand ClickCommand { get; set; }
}
<Button Command="{Binding Path=ClickCommand}" />
Se si fa questo, allora si può provare il comando semplicemente chiamando myViewModel.ClickCommand.Execute
manualmente.
2: esporre una funzione nel ViewModel, e scrivere il assoluta minima nel file .xaml.cs
per gestire l'evento e chiamare la funzione, ad esempio:
class MyViewModel
{
public void HandleClick(){ }
}
<Button Click="MyClickHandler">
//.xaml.cs file
public void MyClickHandler(Object sender, EventArgs e) {
m_viewModel.HandleClick()
}
Se si esegue questa operazione, quindi puoi provare semplicemente chiamando myViewModel.HandleClick
manualmente. Non dovresti preoccuparti di testare il codice dato che è solo una linea!
fonte
2009-03-11 22:51:42