UIElement.KeyboardAccelerators Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 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í se especifican aceleradores de teclado para un conjunto de botones (se especifica 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>
Controle 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 un tooltip en relación con 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 los aceleradores de teclado no suelen describirse directamente en la interfaz de usuario de la aplicación, puede mejorar la detectabilidad a través de información sobre herramientas, que se muestra automáticamente cuando el usuario mueve el foco a, presiona y 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, de ser así, cuál es la combinación de teclas de dicho 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 versiones 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 asociados con los objetos MenuFlyoutItem y ToggleMenuFlyoutItem). Tenga en cuenta que especificar explícitamente una información sobre herramientas invalida este comportamiento.
Para los objetos MenuFlyoutItem y ToggleMenuFlyoutItem, el acelerador de teclado se muestra con el texto del menú desplegable.
Si un control tiene más de un acelerador definido, se presenta el primer acelerador registrado.
Según el control, puede invalidar la cadena de combinación de teclas predeterminada asociada a un [acelerador de teclado mediante propiedades de invalidación de texto. ConsultaMenuFlyoutItem.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.