Anschluss von Maus-events mit ViewModel über MouseBinding
Ich habe ein user-control mit einigen telerik controls in der it. Ich habe einen kodierten einem viewmodel, wo all die business-Logik befindet. Ich brauche zum abfangen des Leftbuttondown Fall wissen, wenn ein Benutzer klickt auf die telerik-control. Ich habe versucht mit der MouseBinding Technik zum binden der Leftbuttondown zu den event-handler in das viewmodel. Ich bin mir nicht sicher über das, was ist die Signatur für den event-handler. Ich Las irgendwo, dass der Befehl zu binden, sollte der tyepe ICommand und die Execute-Methode verwendet nur einen parameter.
Die Signatur für die Leftbuttondown Ereignis ist wie
public void SelectItem(object o, EventArgs e)
Wie kann ich pass das zusätzliche argument der Execute?
Ich getan habe Folgendes coding in xaml
<telerik:RadTransitionControl.InputBindings>
<MouseBinding Gesture="LeftClick" Command="SelectedItem" />
</telerik:RadTransitionControl.InputBindings>
Wie soll ich das definieren, das SelectedItem in der ViewModel?
wird indem Command="SelectedItem" zu arbeiten? oder sollte ich hinzufügen, Bindende Klausel hier?
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass die MouseBinding die Command-Eigenschaft ist nicht eine DependencyProperty, so dass Sie nicht binden Sie etwas, um es.
Sehen Sie hier ein ähnliches problem:
Wenn wir nicht binden Sie ein MouseBinding ist Befehl, was sollen wir tun?
Grundsätzlich pro die akzeptierte Antwort auf diese Frage, müssen Sie die AttachedCommandBehavior eher als eine MouseBinding zu erreichen, was Sie wollen. Meiner Meinung nach wäre das der beste Weg ist dies etwas, das Sie tun eine Menge.
Alternativ, wenn dieses der einzige Fall, in Ihrem code, dass Sie dies tun, ich glaube nicht, dass es wehtun würde, um die Ereignisbehandlung in code behind und call-view-Modell-Befehl von dort aus. MVVM-Puristen vielleicht nicht Zustimmen, aber manchmal ist es besser, Dinge zu tun die einfache Weise, sondern als binden sich in Knoten zu versuchen, halten Sie Ihre code-behind-völlig leer!
Erste, was Sie brauchen irgendeine Art von RelayCommand das System implementieren.Windows.Input.ICommand. Dies wird Ihnen helfen, auf die Bindung.
XAML
ViewModel
Den Befehl Wert sollte eine verbindliche, nicht nur eine Eigenschaft-name:
Dann, was Sie gehen in CommandParameter wird das zusätzliche argument, das übergeben wird, Ausführen.