2017-11-06 10 views
1

Ich habe eine Standard-WPF-Schaltfläche, die cal:Message.Attach verwendet, um eine Funktion in dem ViewModel auszuführen. Ich möchte diese Funktion auch ausführen lassen, wenn ich die F2-Taste drücke.Taste drücken, um Aktion zu betätigen

Gibt es eine einfache Xaml-Deklaration mit einer Caliburn Micro-Bindung, die dies ermöglichen kann?

Antwort

3

Aufschalten der Configure() Methode Ihrer Bootstrap: https://github.com/Caliburn-Micro/Caliburn.Micro/blob/master/samples/scenarios/Scenario.KeyBinding/Bootstrapper.cs

... und diese versuchen:

<Button x:Name="TheFunction" 
     Content="Click" 
     cal:Message.Attach="[Key F2] = [TheFunction];" /> 

Es gibt Eine vollständige Codebeispiel im offiziellen Repo auf GitHub verfügbar: https://github.com/Caliburn-Micro/Caliburn.Micro/tree/master/samples/scenarios/Scenario.KeyBinding

+0

Als eine Frage von meiner Seite, weil ich darüber gestolpert bin, wenn ich '' benutzt - Hole die aufgerufene Funktion wenn die Taste nicht gedrückt wurde fokussiert? –

0

Sie haben einen Handler auf das Ereignis hinzuzufügen:

public MainWindow() 
{ 
    InitializeComponent(); 
    this.PreviewKeyDown += new KeyEventHandler(MainWindow_PreviewKeyDown); 
} 

void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if ((e.Key == Key.F2)) 
    { 
     //DO SOMETHING 
    } 
} 
+0

Danke Nico, aber ich suche das im xaml wenn möglich – chuckp

Verwandte Themen