Partager via


Raccourcis clavier

Les raccourcis clavier sont des raccourcis clavier qui améliorent la facilité d’utilisation et l’accessibilité de vos applications d’interface utilisateur d’application multiplateforme .NET (.NET MAUI) sur Mac Catalyst et Windows en fournissant un moyen intuitif aux utilisateurs d’appeler des actions ou des commandes courantes sans naviguer directement dans l’interface utilisateur de l’application.

Un accélérateur clavier se compose de deux composants :

  • Modificateurs, qui incluent Maj, Ctrl et Alt.
  • Clés, qui incluent des clés alphanumériques et des clés spéciales.

Dans .NET MAUI, les raccourcis clavier sont associés aux commandes exposées dans les menus et doivent être spécifiés avec l’élément de menu. Plus précisément, les raccourcis clavier .NET MAUI peuvent être attachés aux éléments de menu dans la barre de menus sur Mac Catalyst et Windows, et les éléments de menu dans les menus contextuels sur Windows. Pour plus d’informations sur les barres de menus, consultez Afficher une barre de menus dans une application de bureau .NET MAUI. Pour plus d’informations sur les menus contextuels, consultez Afficher un menu contextuel dans une application de bureau .NET MAUI.

Les captures d’écran suivantes montrent les éléments de barre de menus et les éléments de menu contextuel qui incluent des accélérateurs de clavier :

Screenshot of menu bar items that include keyboard accelerators.Screenshot of context menu items that include keyboard accelerators.

Un accélérateur clavier est représenté par la KeyboardAccelerator classe, qui représente une touche de raccourci pour un MenuFlyoutItem. La KeyboardAccelerator classe définit les propriétés suivantes :

  • Modifiers, de type KeyboardAcceleratorModifiers, qui représente la valeur de modificateur, telle que Ctrl ou Maj, pour le raccourci clavier.
  • Key, de type string?, qui représente la valeur de touche pour le raccourci clavier.

Ces propriétés sont sauvegardées par BindableProperty des objets, ce qui signifie qu’elles peuvent être des cibles de liaisons de données.

L’énumération KeyboardAcceleratorModifiers définit les membres suivants qui doivent être utilisés comme valeurs pour la Modifiers propriété :

  • None, qui indique aucun modificateur.
  • Shift, qui indique le modificateur Maj sur Mac Catalyst et Windows.
  • Ctrl, qui indique le modificateur de contrôle sur Mac Catalyst et Windows.
  • Alt, qui indique le modificateur d’option sur Mac Catalyst et le modificateur de menu sur Windows.
  • Cmd, qui indique le modificateur de commande sur Mac Catalyst.
  • Windows, qui indique le modificateur Windows sur Windows.

Important

Les raccourcis clavier peuvent être attachés à MenuFlyoutItem des objets dans un MenuBarItem catalyseur Mac et Windows, et dans un MenuFlyout sur Windows.

Le tableau suivant présente les formats d’accélérateur de clavier .NET MAUI pris en charge :

Plate-forme Clé unique Multi-touches
Mac Catalyst Raccourcis clavier sans modificateur, avec une seule touche. Par exemple, à l’aide de la touche F1 pour appeler l’action associée à un élément de menu. Accélérateurs clavier avec un ou plusieurs modificateurs, avec une seule touche. Par exemple, à l’aide de CMD+MAJ+S ou CMD+S pour appeler l’action associée à un élément de menu.
Windows Raccourcis clavier avec et sans modificateur, avec une seule touche. Par exemple, à l’aide de la touche F1 pour appeler l’action associée à un élément de menu. Accélérateurs clavier avec un ou plusieurs modificateurs, avec une seule touche. Par exemple, en utilisant Ctrl+Maj+F ou Ctrl+F pour appeler l’action associée à un élément de menu.

Créer un accélérateur clavier

Un KeyboardAccelerator peut être attaché à un MenuFlyoutItem en l’ajoutant à sa KeyboardAccelerators collection :

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

Les accélérateurs clavier peuvent également être spécifiés dans le code :

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

Lorsqu’un modificateur d’accélérateur de clavier et une touche sont enfoncés, l’action associée à celle-ci MenuFlyoutItem est appelée.

Important

Bien que plusieurs KeyboardAccelerator objets puissent être ajoutés à la MenuFlyoutItem.KeyboardAccelerators collection, seuls les premiers KeyboardAccelerator de la collection auront son raccourci affiché sur le MenuFlyoutItem. De plus, sur Mac Catalyst, seul le raccourci clavier du premier KeyboardAccelerator de la collection entraîne l’appel de l’action associée MenuFlyoutItem . Toutefois, sur Windows, les raccourcis clavier pour tous les objets de la MenuFlyoutItem.KeyboardAccelerators collection entraînent l’appel de KeyboardAccelerator l’actionMenuFlyoutItem.

Spécifier plusieurs modificateurs

Plusieurs modificateurs peuvent être spécifiés sur les KeyboardAccelerator deux plateformes :

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

Le code C# équivalent est :

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

Spécifier des accélérateurs clavier par plateforme

Différents modificateurs et touches d’accélérateur de clavier peuvent être spécifiés par plateforme en XAML avec l’extension de OnPlatform balisage :

<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>

Le code C# équivalent est :

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
});

Utiliser des touches spéciales dans un accélérateur de clavier

Sur Windows, des clés spéciales peuvent être spécifiées via une constante de chaîne ou avec un entier. Pour obtenir la liste des constantes et des entiers, consultez la table dans VirtualKey.

Remarque

Sur Windows, les accélérateurs à touche unique (toutes les touches alphanumériques et de ponctuation, Delete, F2, Espace, Échap, touche multimédia) et les accélérateurs à plusieurs touches (Ctrl+Maj+M) sont pris en charge. Toutefois, les touches virtuelles du Boîtier de commande ne sont pas prises en charge.

Sur Mac Catalyst, des clés spéciales peuvent être spécifiées via une constante de chaîne. Pour obtenir la liste des constantes qui représentent les chaînes d’entrée de texte qui correspondent à des clés spéciales, consultez les chaînes d’entrée pour les clés spéciales sur developer.apple.com.

Le code XAML suivant montre un exemple de définition d’un accélérateur clavier qui utilise une touche spéciale :

<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>

Dans cet exemple, l’accélérateur clavier est la touche F1, qui est spécifiée via une constante sur les deux plateformes. Sur Windows, il peut également être spécifié par l’entier 112.

Localiser un accélérateur de clavier

Les touches d’accélérateur de clavier peuvent être localisées via un fichier de ressources .NET. La clé localisée peut ensuite être récupérée à l’aide de l’extension de x:Static balisage :

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

Pour plus d’informations, consultez Localisation.

Désactiver un accélérateur clavier

Lorsqu’un MenuFlyoutItem clavier est désactivé, l’accélérateur de clavier associé est également désactivé :

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

Dans cet exemple, étant donné que la IsEnabled propriété du MenuFlyoutItem clavier est définie falsesur , l’accélérateur clavier Ctrl+X associé ne peut pas être appelé.