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 .
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 MenuFlyoutItem
objetos 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).
Aqui, mostramos como usar a KeyboardAcceleratorPlacementTarget
propriedade para exibir a combinação de teclas de acelerador de teclado para um botão Salvar com o Grid
contêiner 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 os aceleradores de teclado normalmente não são descritos diretamente na interface do usuário do aplicativo, você pode melhorar a descoberta por meio de dicas de ferramenta, que são exibidas automaticamente quando o usuário move o foco para, pressiona e segura 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.
Windows 10 build 1703 e posteriormente introduziu atalhos de acelerador de teclado. No entanto, esses atalhos não foram exibidos com a interface do usuário de seus controles correspondentes.
No Windows 10 build 1803 e posterior, 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. ConsulteMenuFlyoutItem.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.