Chiavi di accesso
I tasti di scelta rapida sono tasti di scelta rapida che migliorano l'usabilità e l'accessibilità delle applicazioni Windows offrendo agli utenti un modo intuitivo per spostarsi e interagire rapidamente con l'interfaccia utente visibile di un'app tramite una tastiera anziché un dispositivo puntatore (ad esempio tocco o mouse).
L'app Windows offre il supporto predefinito tra i controlli della piattaforma per i tasti di scelta basata su tastiera e il feedback dell'interfaccia utente associato tramite segnali visivi denominati key Suggerimenti.
Nota
Una tastiera è indispensabile per gli utenti con determinate disabilità (vedi Accessibilità della tastiera) ed è anche uno strumento importante per gli utenti che preferiscono come un modo più efficiente per interagire con un'app.
Vedere l'argomento Tasti di scelta rapida per informazioni dettagliate sulla chiamata di azioni comuni in un'applicazione Windows con tasti di scelta rapida.
Per creare scelte rapide da tastiera personalizzate, vedere l'argomento Eventi della tastiera .
Panoramica
Un tasto di scelta è una combinazione del tasto ALT e di uno o più tasti alfanumerici, talvolta chiamati mnemonic, in genere premuti in sequenza, anziché simultaneamente.
I suggerimenti per i tasti sono badge visualizzati accanto ai controlli che supportano i tasti di scelta quando l'utente preme il tasto ALT. Ogni suggerimento chiave contiene le chiavi alfanumerici che attivano il controllo associato.
Nota
I tasti di scelta rapida sono supportati automaticamente per i tasti di scelta con un singolo carattere alfanumerico. Ad esempio, premendo simultaneamente ALT+F in Word si apre il menu File senza visualizzare Il tasto Suggerimenti.
Premendo ALT si inizializza la funzionalità del tasto di scelta e vengono visualizzate tutte le combinazioni di tasti attualmente disponibili in Key Suggerimenti. Le sequenze di tasti successive vengono gestite dal framework dei tasti di scelta, che rifiuta i tasti non validi finché non viene premuto un tasto di scelta valido oppure i tasti INVIO, ESC, TAB o Freccia vengono premuti per disattivare i tasti di scelta e restituire la gestione delle sequenze di tasti all'app.
Microsoft Office le app offrono un supporto completo per le chiavi di accesso. L'immagine seguente mostra la scheda Home di Word con tasti di scelta attivati (si noti il supporto per numeri e più sequenze di tasti).

Badge di descrizione chiave per le chiavi di accesso in Microsoft Word
Per aggiungere una chiave di accesso a un controllo, utilizzare la proprietà AccessKey. Il valore di questa proprietà specifica la sequenza di tasti di scelta rapida, il tasto di scelta rapida (se un singolo alfanumerico) e il suggerimento per i tasti.
<Button Content="Accept" AccessKey="A" Click="AcceptButtonClick" />
Quando usare le chiavi di accesso
È consigliabile specificare le chiavi di accesso ovunque sia appropriato nell'interfaccia utente e supportare le chiavi di accesso in tutti i controlli personalizzati.
I tasti di scelta rendono l'app più accessibile per gli utenti con disabilità motorie, inclusi gli utenti che possono premere un solo tasto alla volta o avere difficoltà a usare un mouse.
Un'interfaccia utente di tastiera ben progettata è un aspetto importante dell'accessibilità del software. Consente agli utenti con problemi di vista o con determinate disabilità motorie di esplorare un'app e interagire con le sue funzionalità. Questi utenti potrebbero non essere in grado di manovrare un mouse e fare affidamento su diversi strumenti di Assistive Technology, ad esempio strumenti per il miglioramento della tastiera, tastiere su schermo, strumenti per l'ingrandimento o per la lettura dello schermo e per utilità per l'input vocale. Per questi utenti, la copertura completa dei comandi è fondamentale.
I tasti di scelta rendono l'app più utilizzabile per gli utenti esperti che preferiscono interagire tramite la tastiera.
Gli utenti esperti hanno spesso una forte preferenza per l'uso della tastiera perché i comandi basati su tastiera possono essere immessi più rapidamente e non richiedono loro di rimuovere le mani dalla tastiera. Per questi utenti, efficienza e coerenza sono indispensabili. La completezza è importante solo per i comandi usati più di frequente.
Impostare l'ambito della chiave di accesso
Quando sono presenti molti elementi sullo schermo che supportano i tasti di scelta, è consigliabile definire l'ambito delle chiavi di accesso per ridurre il carico cognitivo. Ciò riduce al minimo il numero di tasti di scelta sullo schermo, che li rende più facili da individuare e migliora l'efficienza e la produttività.
Ad esempio, Microsoft Word fornisce due ambiti chiave di accesso: un ambito primario per le schede della barra multifunzione e un ambito secondario per i comandi nella scheda selezionata.
Le immagini seguenti illustrano i due ambiti chiave di accesso in Word. Il primo mostra i tasti di scelta primari che consentono a un utente di selezionare una scheda e altri comandi di primo livello e il secondo mostra i tasti di scelta secondari per la scheda Home.
Chiavi di accesso primarie in Microsoft Word
Chiavi di accesso secondarie in Microsoft Word
Le chiavi di accesso possono essere duplicate per gli elementi in ambiti diversi. Nell'esempio precedente , "2" è la chiave di accesso per Annulla nell'ambito primario e anche "Corsivo" nell'ambito secondario.
In questo esempio viene illustrato come definire un ambito chiave di accesso.
<CommandBar x:Name="MainCommandBar" AccessKey="M" >
<AppBarButton AccessKey="G" Icon="Globe" Label="Go"/>
<AppBarButton AccessKey="S" Icon="Stop" Label="Stop"/>
<AppBarSeparator/>
<AppBarButton AccessKey="R" Icon="Refresh" Label="Refresh" IsAccessKeyScope="True">
<AppBarButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem AccessKey="A" Icon="Globe" Text="Refresh A" />
<MenuFlyoutItem AccessKey="B" Icon="Globe" Text="Refresh B" />
<MenuFlyoutItem AccessKey="C" Icon="Globe" Text="Refresh C" />
<MenuFlyoutItem AccessKey="D" Icon="Globe" Text="Refresh D" />
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
<AppBarButton AccessKey="B" Icon="Back" Label="Back"/>
<AppBarButton AccessKey="F" Icon="Forward" Label="Forward"/>
<AppBarSeparator/>
<AppBarToggleButton AccessKey="T" Icon="Favorite" Label="Favorite"/>
<CommandBar.SecondaryCommands>
<AppBarToggleButton Icon="Like" AccessKey="L" Label="Like"/>
<AppBarButton Icon="Setting" AccessKey="S" Label="Settings" />
</CommandBar.SecondaryCommands>
</CommandBar>

Ambito primario di CommandBar e chiavi di accesso supportate

Ambito secondario commandBar e chiavi di accesso supportate
Windows 10 Creators Update e versioni precedenti
Prima di Windows 10 Fall Creators Update, alcuni controlli, ad esempio CommandBar, non supportano gli ambiti predefiniti della chiave di accesso.
Nell'esempio seguente viene illustrato come supportare commandBar SecondaryCommands con i tasti di scelta, che sono disponibili quando viene richiamato un comando padre (simile alla barra multifunzione in Word).
<local:CommandBarHack x:Name="MainCommandBar" AccessKey="M" >
<AppBarButton AccessKey="G" Icon="Globe" Label="Go"/>
<AppBarButton AccessKey="S" Icon="Stop" Label="Stop"/>
<AppBarSeparator/>
<AppBarButton AccessKey="R" Icon="Refresh" Label="Refresh" IsAccessKeyScope="True">
<AppBarButton.Flyout>
<MenuFlyout>
<MenuFlyoutItem AccessKey="A" Icon="Globe" Text="Refresh A" />
<MenuFlyoutItem AccessKey="B" Icon="Globe" Text="Refresh B" />
<MenuFlyoutItem AccessKey="C" Icon="Globe" Text="Refresh C" />
<MenuFlyoutItem AccessKey="D" Icon="Globe" Text="Refresh D" />
</MenuFlyout>
</AppBarButton.Flyout>
</AppBarButton>
<AppBarButton AccessKey="B" Icon="Back" Label="Back"/>
<AppBarButton AccessKey="F" Icon="Forward" Label="Forward"/>
<AppBarSeparator/>
<AppBarToggleButton AccessKey="T" Icon="Favorite" Label="Favorite"/>
<CommandBar.SecondaryCommands>
<AppBarToggleButton Icon="Like" AccessKey="L" Label="Like"/>
<AppBarButton Icon="Setting" AccessKey="S" Label="Settings" />
</CommandBar.SecondaryCommands>
</local:CommandBarHack>
public class CommandBarHack : CommandBar
{
CommandBarOverflowPresenter secondaryItemsControl;
Popup overflowPopup;
public CommandBarHack()
{
this.ExitDisplayModeOnAccessKeyInvoked = false;
AccessKeyInvoked += OnAccessKeyInvoked;
}
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
Button moreButton = GetTemplateChild("MoreButton") as Button;
moreButton.SetValue(Control.IsTemplateKeyTipTargetProperty, true);
moreButton.IsAccessKeyScope = true;
// SecondaryItemsControl changes
secondaryItemsControl = GetTemplateChild("SecondaryItemsControl") as CommandBarOverflowPresenter;
secondaryItemsControl.AccessKeyScopeOwner = moreButton;
overflowPopup = GetTemplateChild("OverflowPopup") as Popup;
}
private void OnAccessKeyInvoked(UIElement sender, AccessKeyInvokedEventArgs args)
{
if (overflowPopup != null)
{
overflowPopup.Opened += SecondaryMenuOpened;
}
}
private void SecondaryMenuOpened(object sender, object e)
{
//This is not neccesay given we are automatically pushing the scope.
var item = secondaryItemsControl.Items.First();
if (item != null && item is Control)
{
(item as Control).Focus(FocusState.Keyboard);
}
overflowPopup.Opened -= SecondaryMenuOpened;
}
}
Evitare conflitti di tasti di scelta
I conflitti di tasti di scelta si verificano quando due o più elementi nello stesso ambito hanno tasti di scelta duplicati o iniziano con gli stessi caratteri alfanumerici.
Il sistema risolve le chiavi di accesso duplicate elaborando la chiave di accesso del primo elemento aggiunto all'albero visuale, ignorando tutti gli altri.
Quando più tasti di scelta iniziano con lo stesso carattere (ad esempio, "A", "A1" e "AB"), il sistema elabora il tasto di scelta del singolo carattere e ignora tutti gli altri.
Evitare conflitti usando chiavi di accesso univoche o tramite comandi di ambito.
Scegliere i tasti di scelta
Quando si scelgono le chiavi di accesso, tenere presente quanto segue:
- Usare un singolo carattere per ridurre al minimo le sequenze di tasti di scelta rapida e supportare i tasti di scelta rapida per impostazione predefinita (ALT+AccessKey)
- Evitare di usare più di due caratteri
- Evitare conflitti di tasti di scelta
- Evitare caratteri difficili da distinguere da altri caratteri, ad esempio la lettera "I" e il numero "1" o la lettera "O" e il numero "0"
- Usare precedenti noti di altre app popolari, ad esempio Word ("F" per "File", "H" per "Home" e così via)
- Usare il primo carattere del nome del comando o un carattere con un'associazione stretta al comando che consente di richiamare
- Se la prima lettera è già assegnata, usare una lettera il più vicina possibile alla prima lettera del nome del comando ("N" per Inserisci)
- Usare una consonante distintiva dal nome del comando ("W" per View)
- Usare una vocale dal nome del comando.
Localizzare le chiavi di accesso
Se l'app verrà localizzata in più lingue, è consigliabile anche localizzare le chiavi di accesso. Ad esempio, per "H" per "Home" in en-US e "I" per "Incio" in es-ES.
Usare l'estensione x:Uid nel markup per applicare risorse localizzate, come illustrato di seguito:
<Button Content="Home" AccessKey="H" x:Uid="HomeButton" />
Le risorse per ogni lingua vengono aggiunte alle cartelle Stringa corrispondenti nel progetto:

Cartelle di stringhe di risorse in inglese e spagnolo
Le chiavi di accesso localizzate vengono specificate nel file resources.resw dei progetti:

Specificare la proprietà AccessKey specificata nel file resources.resw
Per altre info, vedi Traduzione delle risorse dell'interfaccia utente
Posizionamento dei suggerimenti per i tasti
I suggerimenti per i tasti vengono visualizzati come badge mobili relativi all'elemento dell'interfaccia utente corrispondente, tenendo conto della presenza di altri elementi dell'interfaccia utente, di altri Suggerimenti chiave e del bordo dello schermo.
In genere, il percorso predefinito del suggerimento per i tasti è sufficiente e fornisce il supporto predefinito per l'interfaccia utente adattiva.

Esempio di posizionamento automatico del suggerimento per i tasti
Tuttavia, se è necessario un maggiore controllo sul posizionamento del suggerimento per i tasti, è consigliabile:
Principio di associazione ovvio: l'utente può associare facilmente il controllo al suggerimento per i tasti.
a. Il suggerimento chiave deve essere vicino all'elemento che ha la chiave di accesso (il proprietario).
b. Il suggerimento per i tasti deve evitare di coprire gli elementi abilitati con tasti di scelta.
c. Se non è possibile posizionare un suggerimento chiave vicino al proprietario, deve sovrapporsi al proprietario.Individuabilità: l'utente può individuare rapidamente il controllo con il suggerimento per i tasti.
a. Il suggerimento chiave non si sovrappone mai ad altri Suggerimenti chiave.
Facile analisi: L'utente può ignorare facilmente il key Suggerimenti.
a. Il Suggerimenti chiave deve essere allineato tra loro e con l'elemento dell'interfaccia utente. b. Le Suggerimenti chiave devono essere raggruppate il più possibile.
Posizione relativa
Utilizzare la proprietà KeyTipPlacementMode per personalizzare la posizione del suggerimento per i tasti per elemento o per gruppo.
Le modalità di posizionamento sono: Top, Bottom, Right, Left, Hidden, Center e Auto.

Modalità di posizionamento del suggerimento chiave
La linea centrale del controllo viene utilizzata per calcolare l'allineamento verticale e orizzontale del suggerimento tasto.
Nell'esempio seguente viene illustrato come impostare il posizionamento del suggerimento per i tasti di un gruppo di controlli usando la proprietà KeyTipPlacementMode di un contenitore StackPanel.
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" KeyTipPlacementMode="Top">
<Button Content="File" AccessKey="F" />
<Button Content="Home" AccessKey="H" />
<Button Content="Insert" AccessKey="N" />
</StackPanel>
Offset
Usare le proprietà KeyTipHorizontalOffset e KeyTipVerticalOffset di un elemento per un controllo ancora più granulare della posizione del suggerimento per i tasti.
Nota
Gli offset non possono essere impostati quando KeyTipPlacementMode è impostato su Auto.
La proprietà KeyTipHorizontalOffset indica la distanza da cui spostare il suggerimento tasto a sinistra o a destra.

Impostare gli offset del suggerimento per i tasti verticali e orizzontali per un pulsante
<Button
Content="File"
AccessKey="F"
KeyTipPlacementMode="Bottom"
KeyTipHorizontalOffset="20"
KeyTipVerticalOffset="-8" />
Allineamento dei bordi dello schermo {allineamento bordo #screen. ListParagraph}
La posizione di un suggerimento per i tasti viene modificata automaticamente in base al bordo dello schermo per garantire che il suggerimento per i tasti sia completamente visibile. In questo caso, la distanza tra il controllo e il punto di allineamento suggerimento chiave può essere diversa dai valori specificati per gli offset orizzontali e verticali.

I Suggerimenti chiave vengono posizionati automaticamente in base al bordo dello schermo
Stile suggerimento chiave
È consigliabile usare il supporto predefinito key tip per i temi della piattaforma, incluso il contrasto elevato.
Se è necessario specificare stili di suggerimento chiave personalizzati, usare risorse dell'applicazione come KeyTipFontSize (dimensioni del carattere), KeyTipFontFamily (famiglia di caratteri), KeyTipBackground (sfondo), KeyTipForeground (primo piano), KeyTipPadding (riempimento), KeyTipBorderBrush(Border color) e KeyTipBorderThemeThickness (spessore del bordo).

Opzioni di personalizzazione dei suggerimenti chiave
Questo esempio illustra come modificare queste risorse dell'applicazione:
<Application.Resources>
<SolidColorBrush Color="DarkGray" x:Key="MyBackgroundColor" />
<SolidColorBrush Color="White" x:Key="MyForegroundColor" />
<SolidColorBrush Color="Black" x:Key="MyBorderColor" />
<StaticResource x:Key="KeyTipBackground" ResourceKey="MyBackgroundColor" />
<StaticResource x:Key="KeyTipForeground" ResourceKey="MyForegroundColor" />
<StaticResource x:Key="KeyTipBorderBrush" ResourceKey="MyBorderColor"/>
<FontFamily x:Key="KeyTipFontFamily">Consolas</FontFamily>
<x:Double x:Key="KeyTipContentThemeFontSize">18</x:Double>
<Thickness x:Key="KeyTipBorderThemeThickness">2</Thickness>
<Thickness x:Key="KeyTipThemePadding">4,4,4,4</Thickness>
</Application.Resources>
Tasti di scelta e Assistente vocale
Il framework XAML espone proprietà di automazione che consentono ai client di Automazione interfaccia utente di individuare informazioni sugli elementi nell'interfaccia utente.
Se si specifica la proprietà AccessKey in un controllo UIElement o TextElement, è possibile utilizzare la proprietà AutomationProperties.AccessKey per ottenere questo valore. I client di accessibilità, ad esempio Assistente vocale, leggono il valore di questa proprietà ogni volta che un elemento ottiene lo stato attivo.
Articoli correlati
Esempi