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