UIElement.KeyboardAccelerators Propiedad

Definición

Obtiene la colección de combinaciones de teclas que invocan una acción mediante el teclado.

Normalmente, los aceleradores se asignan a botones o elementos de menú.

Ejemplo de un menú que muestra los aceleradores de teclado para varios elementos de menú
Ejemplo de un menú que muestra los aceleradores de teclado para varios elementos de menú

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

Colección de objetos KeyboardAccelerator .

Ejemplos

Aquí especificamos aceleradores de teclado para un conjunto de botones (especificamos una información sobre herramientas para Button1, que invalida el comportamiento de visualización predeterminado del acelerador de teclado).

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

En este ejemplo, se especifican aceleradores de teclado para un conjunto de MenuFlyoutItem objetos y ToggleMenuFlyoutItem . El acelerador de teclado se muestra en el control flotante del control.

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

Controlar el comportamiento de la presentación mediante la propiedad KeyboardAcceleratorPlacementMode , que acepta dos valores: Automático o Oculto.

<Button Content="Save" Click="OnSave" KeyboardAcceleratorPlacementMode="Auto">
    <Button.KeyboardAccelerators>
        <KeyboardAccelerator Key="S" Modifiers="Control" />
    </Button.KeyboardAccelerators>
</Button>

En algunos casos, es posible que tenga que presentar una información sobre herramientas relativa a otro elemento (normalmente un objeto contenedor).

Aquí se muestra cómo usar la propiedad para mostrar la KeyboardAcceleratorPlacementTarget combinación de teclas del acelerador de teclado para un botón Guardar con el Grid contenedor en lugar del botón.

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

Comentarios

Como normalmente los aceleradores de teclado no se describen directamente en la interfaz de usuario de la aplicación, puede mejorar la detectabilidad a través de información sobre herramientas, que se muestran automáticamente cuando el usuario mueve el foco hacia, presiona y mantiene presionado, o mantiene el puntero del mouse sobre un control. La información sobre herramientas puede identificar si un control tiene un acelerador de teclado asociado y, si es así, cuál es la combinación de teclas del acelerador.

Windows 10 compilación 1703 y versiones posteriores introdujo métodos abreviados de acelerador de teclado. Sin embargo, estos accesos directos no se mostraron con la interfaz de usuario de sus controles correspondientes.

En Windows 10 compilación 1803 y posteriores, cuando se declaran KeyboardAccelerators, los controles presentan las combinaciones de teclas correspondientes de forma predeterminada en una información sobre herramientas (a menos que estén asociadas a los objetos MenuFlyoutItem y ToggleMenuFlyoutItem).

Nota

Al especificar una información sobre herramientas se invalida este comportamiento.

Para los objetos MenuFlyoutItem y ToggleMenuFlyoutItem , el acelerador de teclado se muestra con el texto flotante.

Si un control tiene más de un acelerador definido, se presenta el primer acelerador registrado.

Dependiendo del control, puede invalidar la cadena de combinación de teclas predeterminada asociada a un [acelerador de teclado mediante propiedades de invalidación de texto. VeaMenuFlyoutItem.KeyboardAcceleratorTextOverride, AppBarButton.KeyboardAcceleratorTextOverride y AppBarToggleButton.KeyboardAcceleratorTextOverride.

Una tecla de aceleración puede ser una sola tecla, como F1 - F12 y Esc, o una combinación de teclas (Ctrl + Mayús + B o Ctrl C) que invocan un comando. Difieren de las claves de acceso (mnemonics), que normalmente se modifican con la tecla Alt y simplemente activan un comando o control.

Se puede ejecutar un acelerador incluso si el elemento asociado al acelerador no está visible. Por ejemplo, un elemento de la colección CommandBar.SecondaryCommands de CommandBar se puede invocar mediante un acelerador sin expandir el menú de desbordamiento y mostrar el elemento.

De forma predeterminada, un acelerador tiene ámbito global. Sin embargo, puede restringir el ámbito mediante KeyboardAccelerator.ScopeOwner o deshabilitar un acelerador completamente mediante KeyboardAccelerator.IsEnabled.

Se aplica a

Consulte también