Freigeben über


Tastaturkürzel

Zugriffstasten sind Tastenkombinationen, die die Benutzerfreundlichkeit und Barrierefreiheit Ihrer .NET Multi-Platform App UI (.NET MAUI) Apps in Mac Catalyst und Windows verbessern Sie bieten dem Benutzer eine intuitive Möglichkeit, allgemeine Aktionen oder Befehle aufzurufen, ohne direkt in der Benutzeroberfläche der App zu navigieren.

Eine Zugriffstaste besteht aus zwei Komponenten:

  • Modifizierer, die die UMSCHALTTASTE, STRG und ALT enthalten.
  • Tasten, die alphanumerische Tasten und Sondertasten enthalten.

In .NET MAUI sind Zugriffstasten mit Befehlen verknüpft, die in Menüs angezeigt werden, und sollten mit dem Menüelement angegeben werden. Insbesondere können .NET MAUI-Zugriffstasten an Menüpunkte in der Menüleiste unter Mac Catalyst und Windows sowie an Menüpunkte in Kontextmenüs unter Windows angehängt 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 of menu bar items that include keyboard accelerators.Screenshot of context menu items that include keyboard accelerators.

Eine Zugriffstaste wird durch die Klasse KeyboardAccelerator dargestellt, die eine Tastenkombination für ein MenuFlyoutItem darstellt. Die KeyboardAccelerator-Klasse definiert die folgenden Eigenschaften:

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

Diese Eigenschaften werden durch BindableProperty-Objekte gestützt, 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 Umschaltmodifizierer unter Mac Catalyst und Windows angibt.
  • Ctrl, was unter Mac Catalyst und Windows den Control-Modifikator darstellt.
  • Alt, was unter Mac Catalyst den Optionsmodifizierer und unter Windows den Menümodifizierer darstellt.
  • Cmd, der den Befehlsmodifizierer auf Mac Catalyst angibt.
  • Windows, der den Windows-Modifizierer unter Windows angibt.

Wichtig

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

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

Plattform Einzelne Taste Mehrere Tasten
Mac Catalyst Zugriffstasten ohne Modifizierer mit einer einzigen Taste. Zum Beispiel die Taste F1, um die mit einem Menüpunkt verbundene Aktion aufzurufen. Zugriffstasten mit einem oder mehreren Modifizierern, mit einer einzigen Taste. Verwenden Sie zum Beispiel CMD+UMSCHALT+S oder CMD+S, um die mit einem Menüelement verbundene Aktion aufzurufen.
Windows Zugriffstasten mit und ohne Modifizierer, mit einer einzigen Taste. Zum Beispiel die Taste F1, um die mit einem Menüpunkt verbundene Aktion aufzurufen. Zugriffstasten mit einem oder mehreren Modifizierern, mit einer einzigen Taste. Beispielsweise können Sie mithilfe von STRG+UMSCHALT+F oder STRG+F die mit einem Menüpunkt verbundene Aktion aufrufen.

Erstellen einer Zugriffstaste

Eine KeyboardAccelerator kann an ein MenuFlyoutItem angehängt werden, indem sie zu ihrer KeyboardAccelerators-Sammlung hinzugefügt wird:

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

Zugriffstasten können auch im Code angegeben werden:

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

Wenn ein Modifizierer und eine Taste für die Zugriffstaste gedrückt werden, wird die mit MenuFlyoutItem verbundene Aktion aufgerufen.

Wichtig

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 Tastenkombination im MenuFlyoutItem angezeigt. Darüber hinaus wird unter Mac Catalyst nur die Tastenkombination für das erste KeyboardAccelerator in der Sammlung dazu führen, dass die mit MenuFlyoutItem verbundene Aktion aufgerufen wird. Unter Windows bewirken die Tastenkombinationen für alle KeyboardAccelerator-Objekte in der MenuFlyoutItem.KeyboardAccelerators-Sammlung jedoch, dass die MenuFlyoutItem-Aktion aufgerufen wird.

Angeben mehrerer Modifizierer

Mehrere Modifizierer können auf beiden KeyboardAccelerator 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"
});

Festlegen von Zugriffstasten pro Plattform

Verschiedene Zugriffstastenmodifizierer und Tasten können pro Plattform in XAML mit der OnPlatform Markuperweiterung 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 Sondertasten über eine Zeichenfolgenkonstante oder mit einer ganzen Zahl angegeben werden. Für eine Liste von Konstanten und ganzen Zahlen siehe die Tabelle in VirtualKey.

Hinweis

Unter Windows werden Einzel-Zugriffstasten (alle alphanumerischen und Interpunktions-Tasten, Entf, F2, Leertaste, Esc, Multimedia-Taste) und Mehr-Zugriffstasten (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 für 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 die Zugriffstaste F1, die über eine Konstante auf beiden Plattformen angegeben wird. Unter Windows kann sie auch durch die Ganzzahl 112 angegeben werden.

Lokalisieren einer Zugriffstaste

Zugriffstasten können über eine .NET-Ressourcendatei lokalisiert werden. Die lokalisierte Taste kann dann mit Hilfe der Markup-Erweiterung x:Static 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.

Deaktivieren einer Zugriffstaste

Wenn ein MenuFlyoutItem deaktiviert wird, wird auch die zugeordnete Zugriffstaste deaktiviert:

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

In diesem Beispiel kann die zugeordnete Zugriffstaste STRG+X nicht aufgerufen werden, weil die Eigenschaft IsEnabled der MenuFlyoutItem auf false festgelegt ist.