当我在Xbox控制台上使用“远程机器”方法从我的Visual Studio启动应用程序时,我能够使用游戏手柄进行导航,并能够获得“KeyDown”事件。但是当我关闭应用程序并从“游戏和应用程序”选项卡再次启动它时,一旦应用程序完全加载,然后如果我尝试使用游戏手柄进行导航,我就无法进行导航,并且“keyDown”事件根本不会被触发。
我需要点击控制器上的“Xbox按钮”并关闭侧菜单,然后我就可以正常导航,没有任何问题。但为什么我不能做导航一旦应用程序启动。
我想这可能是由于一些焦点问题,所以我添加了相应的代码,但仍然面临同样的问题。对于用户来说,这是一种阻塞的情况,因为即使单击B按钮,他也无法退出应用程序。
mainpage.xaml.cs:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
MyWebView.Focus(FocusState.Programmatic);
}
对于webview,我使用下面的代码。
mainpage.xaml:
<Grid>
<WebView x:Name="MyWebView"
Source="...">
</WebView>
</Grid>
1条答案
按热度按时间bqujaahr1#
在做了一些研究并通过所有的微软文档的Xbox开发我发现了一个堆栈溢出的问题,其中提到了相同的问题,但在不同的情况下,并使用该方法来解决这个问题,在这个SO链接https://stackoverflow.com/a/55595531/15189804和评论中提到了这篇文章https://stackoverflow.com/a/76707340/15189804
在输入框上也观察到了同样的问题,而在我们的场景中,它是在addEventListener上。
导致此问题的主要根本原因是启动应用程序时未将焦点设置为WebView。一旦我打开Xbox菜单指南并关闭,它就会将焦点设置到WebView上,然后WebView就能够监听事件。
要将焦点设置到WebView,我们需要在代码隐藏中显式添加一些代码,这将有助于在启动应用程序时设置焦点。
在代码隐藏文件中,我们使用了
NavigationCompleted
,一旦WebView成功加载所需的内容,它就会被调用,然后我们将Visibility折叠并再次可见,这将有助于将焦点设置为WebView并侦听keyDown
事件。希望这对你有帮助,编码快乐!!!