Навигация по страницам UWP Xbox One при использовании WebView

Обычно при запуске приложения UWP на Xbox кнопка B на контроллере обрабатывается автоматически и возвращает вас на предыдущую страницу.

У меня есть страница, содержащая WebView, когда вы используете кнопки направления, чтобы поместить поле фокуса вокруг этого элемента управления, кнопка B больше не отвечает. Вы можете использовать кнопку A, чтобы взять под контроль WebView и отобразить указатель, а кнопка B вернет фокус обратно, как указано выше, но я не могу вернуться назад с помощью кнопки B, пока вы не переместите поле фокуса на другой элемент управления. Это также происходит с помощью AdControl, поскольку здесь используется WebView.

Я попытался захватить KeyDown:

Window.Current.CoreWindow.KeyDown += CoreWindow_KeyDown;

private void CoreWindow_KeyDown(Windows.UI.Core.CoreWindow sender, Windows.UI.Core.KeyEventArgs args)
{
    Debug.WriteLine(args.VirtualKey.ToString());
}

Это отвечает GamePadB, GamePadX и т. д., но не когда поле фокуса находится вокруг WebView.

Могу ли я в любом случае узнать, когда нажимаются кнопки GamePad (в частности, B), когда поле фокуса находится вокруг WebView (или AdControl), а элемент управления не задействован, поэтому я могу вручную вызвать навигацию по стеку назад?


person Stu Ayton    schedule 05.01.2017    source источник
comment
Когда мы используем режим мыши для приложения XBOX, кнопка B будет работать очень хорошо и перемещаться назад. Я могу воспроизвести эту проблему при использовании режима фокусировки XY, я проведу дальнейшее тестирование этой проблемы.   -  person Amy Peng - MSFT    schedule 11.01.2017


Ответы (1)


Поскольку эта проблема возникает при использовании режима фокусировки XY для приложения, если ваша версия ОС 14393 или выше, одним из способов обхода этой проблемы является использование режима мыши для этой страницы, которая содержит веб-представление, установив RequiresPointer="WhenFocused" следующим образом. :

<Page RequiresPointer="WhenFocused">
...
</Page>

И установите другую страницу в режим фокусировки XY, используя следующий код в app.xaml.cs:

this.RequiresPointerMode =
   Windows.UI.Xaml.ApplicationRequiresPointerMode.WhenRequested;

Для получения дополнительной информации попробуйте обратиться к следующей статье:
https://msdn.microsoft.com/en-us/windows/uwp/input-and-devices/designing-for-tv#mouse-mode

person Amy Peng - MSFT    schedule 11.01.2017
comment
К сожалению, это означает, что мне придется использовать режим мыши на каждой странице, содержащей AdControl или Webview (то есть на каждой странице!). Надеюсь, что-то можно будет сделать, чтобы исправить это в обновлении Creators, когда оно доберется до Xbox One. - person Stu Ayton; 11.01.2017