UIElement.KeyboardAccelerators Propriedade

Definição

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

Aplica-se a

Confira também