Sdílet prostřednictvím


Klávesové zkratky

Klávesové zkratky jsou klávesové zkratky, které zlepšují použitelnost a přístupnost aplikací pro víceplatformní aplikace .NET (.NET MAUI) v systému Mac Catalyst a Windows tím, že uživatelům poskytují intuitivní způsob, jak vyvolat běžné akce nebo příkazy bez přímého procházení uživatelského rozhraní aplikace.

Akcelerátor klávesnice se skládá ze dvou součástí:

  • Modifikátory, mezi které patří Shift, Ctrl a Alt.
  • Klíče, které zahrnují alfanumerické klíče a speciální klíče.

V rozhraní .NET MAUI jsou akcelerátory klávesnice přidružené k příkazům vystaveným v nabídkách a měly by být zadány s položkou nabídky. Konkrétně lze akcelerátory klávesnice .NET MAUI připojit k položkám nabídky v řádku nabídek v mac Catalyst a Windows a položky nabídek v kontextových nabídkách ve Windows. Další informace o panelech nabídek najdete v tématu Zobrazení řádku nabídek v desktopové aplikaci .NET MAUI. Další informace o kontextových nabídkách najdete v tématu Zobrazení místní nabídky v desktopové aplikaci .NET MAUI.

Následující snímky obrazovky ukazují položky řádku nabídek a položky místní nabídky, které obsahují akcelerátory klávesnice:

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

Akcelerátor klávesnice je reprezentován KeyboardAccelerator třídou, která představuje klávesovou zkratku MenuFlyoutItempro . Třída KeyboardAccelerator definuje následující vlastnosti:

  • Modifiers, typu KeyboardAcceleratorModifiers, který představuje modifikační hodnotu, například Ctrl nebo Shift, pro klávesovou zkratku.
  • Key, typu string?, který představuje hodnotu klíče pro klávesovou zkratku.

Tyto vlastnosti jsou podporovány BindableProperty objekty, což znamená, že mohou být cílem datových vazeb.

Výčet KeyboardAcceleratorModifiers definuje následující členy, které se používají jako hodnoty pro Modifiers vlastnost:

  • None, který označuje žádný modifikátor.
  • Shift, který označuje modifikátor Shift v systému Mac Catalyst a Windows.
  • Ctrl, který označuje modifikátor Control v systému Mac Catalyst a Windows.
  • Alt, který označuje modifikátor Option v Mac Catalyst, a Modifikátor Menu ve Windows.
  • Cmd, který označuje modifikátor Command v Systému Mac Catalyst.
  • Windows, který označuje modifikátor Windows ve Windows.

Důležité

Akcelerátory klávesnice lze připojit k MenuFlyoutItem objektům v systému MenuBarItem Mac Catalyst a Windows a v systému MenuFlyout Windows.

Následující tabulka popisuje formáty akcelerátorů klávesnice, které podporuje rozhraní .NET MAUI:

Platforma Jeden klíč Více klíčů
Mac Catalyst Klávesové zkratky bez modifikátoru s jednou klávesou. Například pomocí klávesy F1 vyvoláte akci přidruženou k položce nabídky. Klávesové zkratky s jedním nebo více modifikátory s jednou klávesou. Například pomocí CMD+SHIFT+S nebo CMD+S vyvoláte akci přidruženou k položce nabídky.
Okna Klávesové zkratky s modifikačním a bez modifikátoru s jednou klávesou. Například pomocí klávesy F1 vyvoláte akci přidruženou k položce nabídky. Klávesové zkratky s jedním nebo více modifikátory s jednou klávesou. Například pomocí kombinace kláves CTRL+SHIFT+F nebo CTRL+F vyvoláte akci přidruženou k položce nabídky.

Vytvoření akcelerátoru klávesnice

A KeyboardAccelerator lze k ní připojit tak, že ho MenuFlyoutItem přidáte do své KeyboardAccelerators kolekce:

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

Akcelerátory klávesnice lze také zadat v kódu:

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

Když je stisknut modifikátor klávesnice a klávesa, vyvolá se akce přidružená k příslušné klávese MenuFlyoutItem .

Důležité

Zatímco do kolekce lze přidat MenuFlyoutItem.KeyboardAccelerators více KeyboardAccelerator objektů, zobrazí se v této kolekci pouze první KeyboardAccelerator objekt v kolekci.MenuFlyoutItem Kromě toho na Mac Catalyst, pouze klávesová zkratka pro první KeyboardAccelerator v kolekci způsobí akci přidruženou k MenuFlyoutItem vyvolání. Ve Windows ale klávesové zkratky pro všechny KeyboardAccelerator objekty v MenuFlyoutItem.KeyboardAccelerators kolekci způsobí MenuFlyoutItem vyvolání akce.

Určení více modifikátorů

Na obou platformách lze zadat KeyboardAccelerator více modifikátorů:

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

Ekvivalentní kód jazyka C# je:

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

Určení akcelerátorů klávesnice na platformu

Různé modifikátory a klávesy akcelerátoru klávesnice je možné zadat pro každou platformu v XAML s rozšířením OnPlatform značek:

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

Ekvivalentní kód jazyka C# je:

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

Použití speciálních kláves v akcelerátoru klávesnice

Ve Windows je možné speciální klíče zadat pomocí řetězcové konstanty nebo celočíselného čísla. Seznam konstant a celých čísel najdete v tabulce v tabulce .VirtualKey

Poznámka:

Ve Windows jsou podporované akcelerátory s jedním klíčem (všechny alfanumerické a interpunkční klávesy, Delete, F2, mezerník, Esc, multimediální klávesa) a akcelerátory s více klávesami (Ctrl+Shift+M). Virtuální klíče Gamepadu se ale nepodporují.

V systému Mac Catalyst lze speciální klíče zadat pomocí řetězcové konstanty. Seznam konstant, které představují textové vstupní řetězce, které odpovídají speciálním klíčům, najdete v tématu Vstupní řetězce pro speciální klíče na developer.apple.com.

Následující XAML ukazuje příklad definování akcelerátoru klávesnice, který používá speciální klávesu:

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

V tomto příkladu je klávesová zkratka F1, která je určena konstantou na obou platformách. Ve Windows může být zadané také celé číslo 112.

Lokalizace akcelerátoru klávesnice

Klávesové zkratky lze lokalizovat prostřednictvím souboru prostředků .NET. Lokalizovaný klíč je pak možné načíst pomocí x:Static rozšíření značek:

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

Další informace naleznete v tématu Lokalizace.

Zakázání akcelerátoru klávesnice

MenuFlyoutItem Pokud je zakázaný, přidružený akcelerátor klávesnice je také zakázaný:

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

V tomto příkladu IsEnabled , protože vlastnost objektu MenuFlyoutItem je nastavena na false, přidružená klávesová zkratka CTRL+X nelze vyvolat.