Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Crea esperienze di interazione nella tua app SDK per app di Windows che funzionano bene con game pad e input di controllo remoto, oltre a mouse, tastiera e tocco.
Informazioni generali
Game pad e telecomando sono i dispositivi di input principali per l'esperienza Xbox a 10 piedi. L'app Windows deve essere utilizzabile e accessibile tramite questi tipi di input, nonché i tipi di input del PC tradizionali.
Vedi Progettazione per Xbox e TV per indicazioni di progettazione generali per l'esperienza di 10 piedi.
API chiave
Pulsanti di controllo remoto e game pad
La tabella seguente elenca i pulsanti hardware e il dispositivo di input che li supporta.
| Button | Game pad | Telecomando |
|---|---|---|
| A/Seleziona | Yes | Yes |
| B/Indietro | Yes | Yes |
| D-pad | Yes | Yes |
| Menù | Yes | Yes |
| View | Yes | Yes |
| X e Y | Yes | NO |
| Levetta sinistra/destra | Yes | NO |
| Trigger sinistri/destri | Yes | NO |
| Paraurti sinistro/destro | Yes | NO |
Mappatura di input integrata
Windows associa automaticamente l'input da tastiera al gamepad e al telecomando:
| Keyboard | Gamepad/telecomando |
|---|---|
| Tasti freccia | D-pad (e anche levetta sinistra sul gamepad) |
| Barra spaziatrice | Pulsante A/Seleziona |
| Entrare | Pulsante A/Seleziona |
| Fuga | Tasto B/Indietro |
Navigazione del focus XY
Lo spostamento dello stato attivo XY consente agli utenti di spostarsi nell'interfaccia utente dell'app in quattro direzioni (su, giù, sinistra, destra) usando il D-pad o il joystick sinistro.
Abilita la navigazione XY
La navigazione dello stato attivo XY è integrata nel framework XAML. Impostare XYFocusKeyboardNavigation su un contenitore per abilitarlo:
<StackPanel XYFocusKeyboardNavigation="Enabled">
<Button Content="Button 1"/>
<Button Content="Button 2"/>
<Button Content="Button 3"/>
</StackPanel>
Ignorare la navigazione direzionale
Utilizza le proprietà XYFocusUp, XYFocusDown, XYFocusLeft e XYFocusRight per sovrascrivere il comportamento di navigazione predefinito:
<Button Content="Button 1"
XYFocusRight="{x:Bind Button2}"/>
<Button x:Name="Button2" Content="Button 2"
XYFocusLeft="{x:Bind Button1}"/>
Indicatore visivo di messa a fuoco
L'indicatore visivo di messa a fuoco è un bordo che evidenzia l'elemento dell'interfaccia utente attualmente focalizzato. Usa l'indicatore visivo dello stato attivo integrato per aiutare gli utenti a navigare con gamepad o telecomando.
In WinUI 3, personalizza l'indicatore visivo dello stato attivo configurando le proprietà di FrameworkElement:
<Button Content="My Button"
FocusVisualPrimaryBrush="Red"
FocusVisualPrimaryThickness="2"
FocusVisualSecondaryBrush="Yellow"
FocusVisualSecondaryThickness="1"/>
Focalizzazione sull'engagement
L'attivazione dello stato attivo richiede che l'utente prema il pulsante A/Seleziona per interagire con un controllo attivo. Ciò impedisce l'attivazione accidentale durante lo spostamento con il D-pad.
Impostare IsFocusEngagementEnabled sui controlli che traggono vantaggio da questo comportamento:
<Slider IsFocusEngagementEnabled="True"/>
Quando la modalità focus è abilitata, l'utente preme A/Select per attivare il controllo, interagisce con esso e quindi preme B per disattivarlo.
Modalità mouse
Per le esperienze delle app in cui la navigazione del focus XY non è pratica (come le mappe o le app di disegno), attiva la modalità mouse. Ciò consente agli utenti di spostarsi liberamente con un game pad, simile all'uso di un mouse.
Annotazioni
UWP metteva a disposizione una proprietà Application.RequiresPointerMode valida per l'intera app per questo scenario.
Microsoft.UI.Xaml.Application in WinUI 3 non ha una proprietà equivalente, quindi imposta RequiresPointer su ogni Page.
Per abilitare la modalità mouse per una pagina specifica, impostare RequiresPointer su Page:
<Page RequiresPointer="WhenEngaged">
<!-- Page content -->
</Page>
CommandBar e ContextFlyout
Usa ContextFlyout per fornire menu di scelta rapida accessibili tramite il pulsante Menu nel game pad:
<GridView>
<GridView.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Open"/>
<MenuFlyoutItem Text="Delete"/>
</MenuFlyout>
</GridView.ContextFlyout>
</GridView>
Procedure consigliate
- Testa l'app con entrambe le esperienze: 2-foot (desktop) e 10-foot (TV).
- Assicurarsi che tutte le funzionalità siano accessibili solo con lo spostamento tramite D-pad.
- Usare
XYFocusKeyboardNavigationnei contenitori per abilitare la navigazione direzionale. - Posizionare il contenuto e i controlli più importanti all'inizio o all'inizio del layout.
- Non fare affidamento sui pulsanti univoci per un dispositivo di input per le interazioni critiche.