使用 WebView 时的 UWP Xbox 单页导航

UWP Xbox One page navigation when using WebView

通常,当 运行 Xbox 上的 UWP 应用程序时,控制器上的 B 按钮会自动处理,并会 return 您转到上一页。

我有一个包含 WebView 的页面,当您使用方向按钮将焦点框放在该控件周围时,B 按钮不再响应。您可以使用 A 按钮控制 WebView 并显示指针,然后 B 按钮将 return 返回焦点,但我无法使用 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 周围时则不会。

当焦点框位于 WebView(或 AdControl)周围并且控件未启用时,我是否可以找出何时按下 GamePad 按钮(特别是 B),以便我可以手动调用 backstack 导航?

由于此问题是在为应用程序使用 XY 焦点模式时发生的,如果您的 OS 版本为 14393 或更高版本,解决此问题的一种解决方法是对该包含 webview 的页面使用鼠标模式通过设置 RequiresPointer="WhenFocused" 如下:

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

并在 app.xaml.cs 中使用以下代码将另一个页面设置为 XY 焦点模式:

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

更多信息,请尝试参考以下文章:
https://msdn.microsoft.com/en-us/windows/uwp/input-and-devices/designing-for-tv#mouse-mode