Ich hatte auch ein ähnliches Problem, wo ich das MouseDoubleClick-Ereignis einer ListView an einen Befehl in meinem ViewModel binden musste.
Die einfachste Lösung, die ich kam, ist eine Dummy-Schaltfläche, die die gewünschte Befehlsbindung hat und die Execute-Methode des Befehls der Schaltfläche im Eventhandler des MouseDoubleClick-Ereignis aufrufen.
.xaml
<Button Visibility="Collapsed" Name="doubleClickButton" Command="{Binding Path=CommandShowCompanyCards}"></Button>
<ListView MouseDoubleClick="ListView_MouseDoubleClick" SelectedItem="{Binding Path=SelectedCompany, UpdateSourceTrigger=PropertyChanged}" BorderThickness="0" Margin="0,10,0,0" ItemsSource="{Binding Path=CompanyList, UpdateSourceTrigger=PropertyChanged}" Grid.Row="1" HorizontalContentAlignment="Stretch" >
Code-Behind
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
doubleClickButton.Command.Execute(null);
}
Es ist nicht einfach, aber es ist wirklich einfach und es funktioniert.
ich bereits in meinem Projekt drei Helfer Klassen verwendet haben. Ich wünschte nur, WPF hätte volle Unterstützung für all diese Dinge, die Entwickler damit machen wollen, aber ich denke, das wird in der Zeit kommen, hey. Danke, das hat funktioniert :) – bluebit
Ich stimme deiner allgemeinen Meinung zu - es ist ein wenig frustrierend, dass die Unterstützung für MVVM nicht mehr in WPF integriert ist. Die meisten erfahrenen WPF-Entwickler haben ihre eigene kleine Bibliothek mit Hilfsprogrammen erstellt. Die Lücke in der Funktionalität ist noch größer, wenn Sie Silverlight machen! –