使用 Web View 时的 UWP Xbox One 页面导航



通常在 Xbox 上运行 UWP 应用时,控制器上的 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 等进行响应,但当焦点框位于 Web View 周围时不会响应。

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

由于在

对应用使用 XY 焦点模式时会发生此问题,因此如果您的操作系统版本为 14393 或更高版本,此问题的一种解决方法是通过设置 RequiresPointer="WhenFocused" 来对此包含 Web 视图的页面使用鼠标模式,如下所示:

<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

最新更新