Nach dem MVVM Muster:
- Der Blick über die Viewmodel weiß - es wird einen Verweis auf sie entweder als eine konkrete Instanz oder eine Schnittstelle
- Das Ansichtsmodell sollte nicht über die Aussicht wissen bei alle.
Wenn Sie Ereignisse behandeln müssen, dann gibt es zwei Möglichkeiten, die ich kenne, es zu tun:
1: Expose einen Befehl in Ihrem Viewmodel, und verwenden Sie die Datenbindung es auszulösen. Dies ist meine bevorzugte Art und Weise, zum Beispiel:
class MyViewModel
{
public ICommand ClickCommand { get; set; }
}
<Button Command="{Binding Path=ClickCommand}" />
Wenn Sie dies tun, dann können Sie den Befehl testen, indem Sie einfach myViewModel.ClickCommand.Execute
manuell aufrufen.
2: eine Funktion in der Viewmodel Expose, und schreiben Sie die absolute Minimum in der .xaml.cs
Datei das Ereignis zu behandeln und die Funktion aufrufen, zB:
class MyViewModel
{
public void HandleClick(){ }
}
<Button Click="MyClickHandler">
//.xaml.cs file
public void MyClickHandler(Object sender, EventArgs e) {
m_viewModel.HandleClick()
}
Wenn Sie dies tun, Dann können Sie testen, indem Sie einfach myViewModel.HandleClick
manuell aufrufen. Sie sollten sich nicht darum kümmern, dass der MyClickHandler
-Code getestet wird, da es nur eine Zeile ist!