Ich kann meinen Kopf nicht um die Implementierung von Schlüsselbindungen wickeln
-
18-09-2019 - |
Frage
Ich möchte Hotkeys in meiner Bewerbung bewältigen. Das Schreiben einer Schlüsselbindung erfordert einen Befehl, der in Ordnung ist, aber mir ist nicht klar, wie viel Arbeit erforderlich ist, um diesen Befehl zu implementieren. Alle Beispiele, die ich zu finden scheine, sind überbetont, unklar oder gehen davon aus, dass ich das MVVM-Muster verwende, das ich nicht bin.
Was sind also die Grundlagen, um einen Schlüsselbindungsunternehmen zum Laufen zu bringen?
Vielen Dank!
Lösung
Die Mindestarbeit an Arbeit, die für die Implementierung eines Befehls erforderlich ist, ist einfach eine Klasse, die implementiert Ich befehle. RoutedCommand ist eine simple Implementierung, die die grundlegende Funktionalität liefert.
Sobald Sie diesen Befehl eingerichtet haben, die KeyBinding
ist recht einfach. Sie bieten einfach eine Key
, und optional Modifiers
für diesen Schlüssel. Eine Reihe von gemeinsamen Befehlen wurde in .NET enthalten. Sie können beispielsweise den Befehl kopieren an Strg+C unter Verwendung dieses Mark-Ups binden:
<Window.InputBindings>
<KeyBinding Command="ApplicationCommands.Copy" Key="C" Modifiers="Ctrl"/>
</Window.InputBindings>
Sie können auschecken ApplicationCommands, Komponentenbeschwerden, und Navigationskommando Für einige andere integrierte Befehle.
Andere Tipps
Der einfachste Weg, um eine Schlüsselbindung zu machen, die ich kenne, besteht darin, so etwas zu tun
in xaml
<Window.CommandBindings>
<CommandBinding Command="MyCommand"
CanExecute="MyCommandCanExecute"
Executed="MyCommandExecuted" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Command="MyCommand" Key="M" Modifiers="Ctrl"/>
</Window.InputBindings>
im Code dahinter
private void MyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
e.Handled = true;
}
private void MyCommandExecuted(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Executed!");
e.Handled = true;
}
Meiner Meinung nach ist es ziemlich lesbar, aber wenn Sie Fragen haben, hinterlassen Sie einen Kommentar!