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!

War es hilfreich?

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!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top