Freigeben über


Tastaturkürzel

Tastaturbeschleuniger sind Tastenkombinationen, die die Benutzerfreundlichkeit und Zugänglichkeit Ihrer .NET Multiplattform App UI (.NET MAUI) Apps auf Mac Catalyst und Windows verbessern, indem sie den Benutzern eine intuitive Möglichkeit bieten, allgemeine Aktionen oder Befehle aufzurufen, ohne direkt in der Appsoberfläche zu navigieren.

Eine Zugriffstaste besteht aus zwei Komponenten:

  • Modifizierer, die Umschalttaste, Strg und Alt einschließen.
  • Tasten, die alphanumerische Tasten und Sondertasten enthalten.

In .NET MAUI sind Tastaturbeschleuniger mit Befehlen verknüpft, die in Menüs bereitgestellt werden, und sollten mit dem Menüpunkt angegeben werden. Insbesondere können .NET MAUI-Tastenkombinationen an Menüelemente in der Menüleiste auf Mac Catalyst und Windows sowie Menüelemente in Kontextmenüs unter Windows angefügt werden. Weitere Informationen zu Menüleisten finden Sie unter Anzeigen einer Menüleiste in einer .NET MAUI-Desktop-App. Weitere Informationen zu Kontextmenüs finden Sie unter Anzeigen eines Kontextmenüs in einer .NET MAUI-Desktop-App.

Die folgenden Screenshots zeigen Menüleistenelemente und Kontextmenüelemente, die Zugriffstasten enthalten:

Screenshot der Menüleisteneinträge, die Tastenkombinationen enthalten.Screenshot von Kontextmenüeinträgen, die Tastenkombinationen enthalten.

Eine Tastaturbeschleunigung wird durch die KeyboardAccelerator Klasse dargestellt, die ein Tastenkürzel für eine MenuFlyoutItem repräsentiert. Die KeyboardAccelerator Klasse definiert die folgenden Eigenschaften:

  • Modifiers, vom Typ KeyboardAcceleratorModifiers, der den Modifiziererwert, wie etwa STRG oder UMSCHALT, für die Tastenkombination darstellt.
  • Key, vom Typ string?, der den Tastenwert für die Tastenkombination darstellt.

Diese Eigenschaften werden von BindableProperty Objekten gesichert, was bedeutet, dass sie Ziele von Datenbindungen sein können.

Die KeyboardAcceleratorModifiers Enumeration definiert die folgenden Elemente, die als Werte für die Modifiers Eigenschaft verwendet werden:

  • None, der keinen Modifizierer angibt.
  • Shift, der den Umschalt-Modifizierer auf Mac Catalyst und Windows angibt.
  • Ctrl, der den Steuerungsmodifikator auf Mac Catalyst und Windows angibt.
  • Alt, der den Optionsmodifizierer auf Mac Catalyst und den Menümodifizierer unter Windows angibt.
  • Cmd, der den Befehlsmodifizierer auf Mac Catalyst angibt.
  • Windows, der den Windows-Modifizierer unter Windows angibt.

Von Bedeutung

Tastaturbeschleuniger können an MenuFlyoutItem-Objekte in einem MenuBarItem auf Mac Catalyst und Windows und in einem MenuFlyout auf Windows angehängt werden.

In der folgenden Tabelle werden die Von .NET MAUI unterstützten Zugriffstastenformate beschrieben:

Plattform Einzelner Schlüssel Mehrere Schlüssel
Mac Catalyst Tastenkombinationen ohne Modifizierer mit einer einzigen Taste. Verwenden Sie z. B. die F1-TASTE, um die aktion aufzurufen, die einem Menüelement zugeordnet ist. Tastenkombinationen mit einem oder mehreren Modifizierern mit einer einzelnen Taste. Verwenden Sie z. B. Cmd+Shift+S oder Cmd+S, um die Aktion aufzurufen, die einem Menüpunkt zugeordnet ist.
Fenster Tastaturbeschleuniger mit und ohne Modifizierer mit einer einzigen Taste. Verwenden Sie z. B. die F1-TASTE, um die aktion aufzurufen, die einem Menüelement zugeordnet ist. Tastaturbeschleuniger mit einem oder mehreren Modifikator-Tasten und einer einzelnen Taste. Verwenden Sie beispielsweise STRG+UMSCHALT+F oder STRG+F, um die Aktion aufzurufen, die einem Menüpunkt zugeordnet ist.

Erstellen eines Tastaturbeschleunigers

Ein KeyboardAccelerator kann an ein MenuFlyoutItem angehängt werden, indem es zu seiner KeyboardAccelerators-Sammlung hinzugefügt wird:

<MenuFlyoutItem Text="Cut"
                Clicked="OnCutMenuFlyoutItemClicked">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Ctrl"
                             Key="X" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Tastenkombinationen können auch im Code angegeben werden:

cutMenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator
{
    Modifiers = KeyboardAcceleratorModifiers.Ctrl,
    Key = "X"
});

Wenn ein Tastaturbeschleuniger und eine Taste gedrückt werden, wird die mit MenuFlyoutItem verbundene Aktion aufgerufen.

Von Bedeutung

Es können zwar mehrere KeyboardAccelerator-Objekte zur MenuFlyoutItem.KeyboardAccelerators-Sammlung hinzugefügt werden, aber nur für das erste KeyboardAccelerator in der Sammlung wird die Verknüpfung auf der MenuFlyoutItem angezeigt. Darüber hinaus bewirkt auf Mac Catalyst nur die Tastenkombination für das erste KeyboardAccelerator in der Kollektion, dass die mit dem MenuFlyoutItem verknüpfte Aktion ausgelöst wird. Unter Windows werden jedoch die Tastenkombinationen für alle KeyboardAccelerator Objekte in der MenuFlyoutItem.KeyboardAccelerators Auflistung dazu führen, dass die MenuFlyoutItem Aktion aufgerufen wird.

Angeben mehrerer Modifizierer

Mehrere Modifizierer können auf einem KeyboardAccelerator auf beiden Plattformen angegeben werden.

<MenuFlyoutItem Text="Refresh"
                Command="{Binding RefreshCommand}">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Shift,Ctrl"
                             Key="R" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Der entsprechende C#-Code lautet:

refreshMenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator
{
    Modifiers = KeyboardAcceleratorModifiers.Shift | KeyboardAcceleratorModifiers.Ctrl,
    Key = "R"
});

Angeben von Zugriffstasten pro Plattform

Verschiedene Zugriffstasten und Modifizierer können pro Plattform in XAML mit der OnPlatform Markup-Erweiterung angegeben werden:

<MenuFlyoutItem Text="Change Theme"
                Command="{Binding ChangeThemeCommand}">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="{OnPlatform MacCatalyst=Cmd, WinUI=Windows}"
                             Key="{OnPlatform MacCatalyst=T, WinUI=C}" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Der entsprechende C#-Code lautet:

KeyboardAcceleratorModifiers modifier = KeyboardAcceleratorModifiers.None;
string key = string.Empty;

if (DeviceInfo.Current.Platform == DevicePlatform.MacCatalyst)
{
    modifier = KeyboardAcceleratorModifiers.Cmd;
    key = "T";
}
else if (DeviceInfo.Current.Platform == DevicePlatform.WinUI)
{
    modifier = KeyboardAcceleratorModifiers.Windows;
    key = "C";
}

myMenuFlyoutItem.KeyboardAccelerators.Add(new KeyboardAccelerator
{
    Modifiers = modifier,
    Key = key
});

Verwenden von Sondertasten in einer Zugriffstaste

Unter Windows können Spezielle Tasten über eine Zeichenfolgenkonstante oder mit einer ganzen Zahl angegeben werden. Eine Liste der Konstanten und ganzzahlen finden Sie in der Tabelle in VirtualKey.

Hinweis

Unter Windows werden einzelne Tastenkombinationen (alle alphanumerischen und Interpunktionstasten, Entfernen, F2, Leertaste, Esc, Multimedia-Taste) und Multitastentastenbeschleuniger (STRG+UMSCHALT+M) unterstützt. Virtuelle Gamepad-Tasten werden jedoch nicht unterstützt.

Auf Mac Catalyst können Sondertasten über eine Zeichenfolgenkonstante angegeben werden. Eine Liste der Konstanten, die die Texteingabezeichenfolgen darstellen, die speziellen Tasten entsprechen, finden Sie unter Eingabezeichenfolgen für Sondertasten auf developer.apple.com.

Der folgende XAML-Code zeigt ein Beispiel zum Definieren einer Zugriffstaste, die eine Sondertaste verwendet:

<MenuFlyoutItem Text="Help"
                Command="{Binding HelpCommand}">
    <MenuFlyoutItem.KeyboardAccelerators>
        <!-- Alternatively, 112 can be used to specify F1 on Windows -->
        <KeyboardAccelerator Modifiers="None"
                             Key="{OnPlatform MacCatalyst=UIKeyInputF1, WinUI=F1}" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

In diesem Beispiel ist der Tastaturbeschleuniger die F1-Taste, die über eine Konstante auf beiden Plattformen angegeben wird. Unter Windows kann es auch durch die ganze Zahl 112 angegeben werden.

Lokalisieren einer Zugriffstaste

Tastenkombinationen können über eine .NET-Ressourcendatei lokalisiert werden. Der lokalisierte Schlüssel kann dann mithilfe der x:Static Markuperweiterung abgerufen werden:

<MenuFlyoutItem Text="Cut"
                Clicked="OnCutMenuFlyoutItemClicked">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Ctrl"
                             Key="{x:Static local:AppResources.CutAcceleratorKey}" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

Weitere Informationen finden Sie unter Lokalisierung.

Eine Zugriffstaste deaktivieren.

Wenn ein MenuFlyoutItem deaktiviert wird, wird auch die zugehörige Zugriffstaste deaktiviert:

<MenuFlyoutItem Text="Cut"
                Clicked="OnCutMenuFlyoutItemClicked"
                IsEnabled="false">
    <MenuFlyoutItem.KeyboardAccelerators>
        <KeyboardAccelerator Modifiers="Ctrl"
                             Key="X" />
    </MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>

In diesem Beispiel kann die zugehörige Tastenkombination STRG+X nicht aufgerufen werden, da die IsEnabled-Eigenschaft von MenuFlyoutItem auf false festgelegt ist.