UIElement.KeyboardAccelerators Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém a coleção de combinações de teclas que invocam uma ação usando o teclado.
Os aceleradores normalmente são atribuídos a botões ou itens de menu.
Exemplo de um menu mostrando aceleradores de teclado para vários itens de menu
public:
property IVector<KeyboardAccelerator ^> ^ KeyboardAccelerators { IVector<KeyboardAccelerator ^> ^ get(); };
IVector<KeyboardAccelerator> KeyboardAccelerators();
public IList<KeyboardAccelerator> KeyboardAccelerators { get; }
var iVector = uIElement.keyboardAccelerators;
Public ReadOnly Property KeyboardAccelerators As IList(Of KeyboardAccelerator)
Valor da propriedade
A coleção de objetos KeyboardAccelerator .
Requisitos do Windows
Família de dispositivos |
Windows 10 Fall Creators Update (introduzida na 10.0.16299.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduzida na v5.0)
|
Exemplos
Aqui, especificamos aceleradores de teclado para um conjunto de botões (especificamos uma dica de ferramenta para Button1, que substitui o comportamento de exibição do acelerador de teclado padrão).
<StackPanel x:Name="Container" Grid.Row="0" Background="AliceBlue">
<Button Content="Button1" Margin="20"
KeyboardAcceleratorPlacementMode="Auto"
ToolTipService.ToolTip="Tooltip">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="A" Modifiers="Windows"/>
</Button.KeyboardAccelerators>
</Button>
<Button Content="Button2" Margin="20"
KeyboardAcceleratorPlacementMode="Auto">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="B" Modifiers="Windows"/>
</Button.KeyboardAccelerators>
</Button>
<Button Content="Button3" Margin="20"
KeyboardAcceleratorPlacementMode="Auto">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="C" Modifiers="Windows"/>
</Button.KeyboardAccelerators>
</Button>
</StackPanel>
Neste exemplo, especificamos aceleradores de teclado para um conjunto de objetos MenuFlyoutItem e ToggleMenuFlyoutItem. O acelerador de teclado é exibido no submenu do controle.
<AppBarButton AccessKey="R" Icon="Refresh" Label="Refresh" IsAccessKeyScope="True">
<AppBarButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem AccessKey="A" Icon="Refresh" Text="Refresh A">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="R" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</MenuFlyoutItem>
<MenuFlyoutItem AccessKey="B" Icon="Globe" Text="Refresh B" />
<MenuFlyoutItem AccessKey="C" Icon="Globe" Text="Refresh C" />
<MenuFlyoutItem AccessKey="D" Icon="Globe" Text="Refresh D" />
<ToggleMenuFlyoutItem AccessKey="E" Icon="Globe" Text="ToggleMe">
<MenuFlyoutItem.KeyboardAccelerators>
<KeyboardAccelerator Key="Q" Modifiers="Control"/>
</MenuFlyoutItem.KeyboardAccelerators>
</ToggleMenuFlyoutItem>
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
Controle o comportamento de apresentação usando a propriedade KeyboardAcceleratorPlacementMode, que aceita dois valores: Automático ou Oculto.
<Button Content="Save" Click="OnSave" KeyboardAcceleratorPlacementMode="Auto">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="S" Modifiers="Control" />
</Button.KeyboardAccelerators>
</Button>
Em alguns casos, talvez você precise apresentar uma dica de ferramenta referente a outro elemento (geralmente um objeto de contêiner). Por exemplo, um controle de pivô que exibe a dica de ferramenta para um PivotItem com o cabeçalho do pivô.
Aqui, mostramos como usar a propriedade KeyboardAcceleratorPlacementTarget para exibir a combinação de teclas do acelerador de teclado para um botão Salvar com o contêiner de grade em vez do botão.
<Grid x:Name="Container" Padding="30">
<Button Content="Save"
Click="OnSave"
KeyboardAcceleratorPlacementMode="Auto"
KeyboardAcceleratorPlacementTarget="{x:Bind Container}">
<Button.KeyboardAccelerators>
<KeyboardAccelerator Key="S" Modifiers="Control" />
</Button.KeyboardAccelerators>
</Button>
</Grid>
Comentários
Como aceleradores de teclado normalmente não são descritos diretamente na interface do usuário do seu aplicativo UWP, você pode melhorar a detectabilidade por meio das dicas de ferramenta, que são exibidas automaticamente quando o usuário move o foco, pressiona e segura um item ou passa o ponteiro do mouse sobre um controle. A dica de ferramenta pode identificar se um controle tem um acelerador de teclado associado e, em caso afirmativo, qual é a combinação de teclas aceleradoras.
O Windows 10, versão 1703, introduziu atalhos de acelerador de teclado. No entanto, esses atalhos não foram exibidos com a interface do usuário de seus controles correspondentes.
A partir do Windows 10, versão 1803, quando KeyboardAccelerators são declarados, os controles apresentam as combinações de teclas correspondentes por padrão em uma dica de ferramenta (a menos que estejam associados aos objetos MenuFlyoutItem e ToggleMenuFlyoutItem ).
Observação
Especificar uma dica de ferramenta substitui esse comportamento.
Para objetos MenuFlyoutItem e ToggleMenuFlyoutItem), o acelerador de teclado é exibido com o texto do submenu.
Se um controle tiver mais de um acelerador definido, o primeiro acelerador registrado será apresentado.
Dependendo do controle, você pode substituir a cadeia de caracteres de combinação de teclas padrão associada a um acelerador de teclado usando propriedades de substituição de texto. Consulte MenuFlyoutItem.KeyboardAcceleratorTextOverride, AppBarButton.KeyboardAcceleratorTextOverride e AppBarToggleButton.KeyboardAcceleratorTextOverride.
Uma tecla aceleradora pode ser uma única chave, como F1 – F12 e Esc, ou uma combinação de teclas (Ctrl + Shift + B ou Ctrl C) que invocam um comando. Elas diferem das chaves de acesso (mnemônicas), que normalmente são modificadas com a chave Alt e simplesmente ativam um comando ou controle.
Um acelerador pode ser executado mesmo se o elemento associado ao acelerador não estiver visível. Por exemplo, um item na coleção CommandBar.SecondaryCommands do CommandBar pode ser invocado usando um acelerador sem expandir o menu de estouro e exibir o elemento .
Por padrão, um acelerador tem escopo global. No entanto, você pode restringir o escopo usando KeyboardAccelerator.ScopeOwner ou desabilitar completamente um acelerador usando KeyboardAccelerator.IsEnabled.