Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Crie experiências de interação na sua aplicação criada com o SDK de Aplicações Windows que funcionem bem com entradas de gamepad e de controlo remoto, além do rato, do teclado e do toque.
Visão geral
O comando de jogo e o controlo remoto são os principais dispositivos de entrada para a experiência da Xbox para utilização a 3 metros. A sua aplicação para Windows deve ser utilizável e acessível através destes tipos de entrada, bem como dos tipos tradicionais de entrada do PC.
Consulte Design para Xbox e TV para orientações gerais de design para a experiência de 10 pés.
APIs principais
Botões do comando de jogos e do controlo remoto
A tabela seguinte lista os botões de hardware e qual o dispositivo de entrada que os suporta.
| Button | Gamepad | Controlo remoto |
|---|---|---|
| A/Selecionar | Yes | Yes |
| B/Back | Yes | Yes |
| D-pad | Yes | Yes |
| Menu | Yes | Yes |
| View | Yes | Yes |
| X e Y | Yes | Não |
| Manípulo esquerdo/direito | Yes | Não |
| Gatilhos esquerdo/direito | Yes | Não |
| Para-choques esquerdo/direito | Yes | Não |
Mapeamento de entrada incorporado
O Windows mapeia automaticamente a entrada do teclado para o gamepad e o controlo remoto:
| Keyboard | Gamepad/comando remoto |
|---|---|
| Teclas de seta | D-pad (também manípulo esquerdo do comando) |
| Barra de espaço | Botão A/Select |
| Entrar | Botão A/Select |
| Fuja | Botão B/Trás |
Navegação por foco XY
A navegação com foco XY permite aos utilizadores navegar na interface da sua aplicação em quatro direções (cima, baixo, esquerda, direita) usando o D-pad ou o stick esquerdo.
Ativar a navegação XY
A navegação de foco XY está integrada no framework XAML. Define XYFocusKeyboardNavigation num contentor para o ativar:
<StackPanel XYFocusKeyboardNavigation="Enabled">
<Button Content="Button 1"/>
<Button Content="Button 2"/>
<Button Content="Button 3"/>
</StackPanel>
Substituir navegação direcional
Utilize as propriedades XYFocusUp, XYFocusDown, XYFocusLeft e XYFocusRight para substituir o comportamento de navegação predefinido:
<Button Content="Button 1"
XYFocusRight="{x:Bind Button2}"/>
<Button x:Name="Button2" Content="Button 2"
XYFocusLeft="{x:Bind Button1}"/>
Foco visual
O visual de foco é uma borda que destaca o elemento de interface atualmente focado. Utilize o indicador visual de foco integrado para ajudar os utilizadores a navegar com um gamepad ou controlo remoto.
No WinUI 3, personalize o visual de foco definindo propriedades em FrameworkElement:
<Button Content="My Button"
FocusVisualPrimaryBrush="Red"
FocusVisualPrimaryThickness="2"
FocusVisualSecondaryBrush="Yellow"
FocusVisualSecondaryThickness="1"/>
Focar no envolvimento
O engajamento do foco exige que o utilizador pressione o botão A/Select para interagir com um controlo focado. Isto evita a ativação acidental ao navegar com o D-pad.
Defina IsFocusEngagementEnabled nos controlos que beneficiam deste comportamento:
<Slider IsFocusEngagementEnabled="True"/>
Quando o engajamento do foco está ativado, o utilizador carrega em A/Select para "ativar" o controlo, interage com ele e depois carrega em B para "desengajar".
Modo de rato
Para experiências de aplicações onde a navegação com foco XY não é prática (como mapas ou aplicações de desenho), ativa o modo rato. Isto permite aos utilizadores navegar livremente com um comando, de forma semelhante ao uso de um rato.
Observação
A UWP disponibilizou uma propriedade ao nível de toda a aplicação Application.RequiresPointerMode para este cenário.
Microsoft.UI.Xaml.Application no WinUI 3 não tem uma propriedade equivalente, por isso defina RequiresPointer em cada Page.
Para ativar o modo rato para uma página específica, defina RequiresPointer em :Page
<Page RequiresPointer="WhenEngaged">
<!-- Page content -->
</Page>
BarraDeComandos e MenuDeContexto
Use ContextFlyout para apresentar menus contextuais acessíveis com o botão Menu no comando:
<GridView>
<GridView.ContextFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Open"/>
<MenuFlyoutItem Text="Delete"/>
</MenuFlyout>
</GridView.ContextFlyout>
</GridView>
Melhores práticas
- Teste a sua aplicação com experiências de 2 pés (desktop) e 10 pés (TV).
- Garanta que todas as funcionalidades são acessíveis apenas com navegação com o D-pad.
- Use
XYFocusKeyboardNavigationem contentores para permitir a navegação direcional. - Coloque o conteúdo e os controlos mais importantes no topo ou início do seu layout.
- Não dependa de botões exclusivos de um dispositivo de entrada para interações críticas.
Artigos relacionados
- Design para Xbox e TV
- Interações com o teclado
- Navegação por foco
- XInput (entrada de comando de jogo) — API de baixo nível para entrada do comando Xbox, incluindo vibração, zona morta do manípulo analógico e resposta dos gatilhos
- Windows. Gaming.Input — API WinRT para comando de jogo, volante de corrida e comando de voo
- Kit de desenvolvimento de jogos da Microsoft (GDK) — Plataforma completa de desenvolvimento de jogos para PC e Xbox
Windows developer