XAML 当我从Xbox上的游戏和应用程序选项卡重新启动应用程序时,

sczxawaw  于 2023-09-28  发布在  其他
关注(0)|答案(1)|浏览(144)

当我在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>
bqujaahr

bqujaahr1#

在做了一些研究并通过所有的微软文档的Xbox开发我发现了一个堆栈溢出的问题,其中提到了相同的问题,但在不同的情况下,并使用该方法来解决这个问题,在这个SO链接https://stackoverflow.com/a/55595531/15189804和评论中提到了这篇文章https://stackoverflow.com/a/76707340/15189804
在输入框上也观察到了同样的问题,而在我们的场景中,它是在addEventListener上。
导致此问题的主要根本原因是启动应用程序时未将焦点设置为WebView。一旦我打开Xbox菜单指南并关闭,它就会将焦点设置到WebView上,然后WebView就能够监听事件。
要将焦点设置到WebView,我们需要在代码隐藏中显式添加一些代码,这将有助于在启动应用程序时设置焦点。

private void MyWebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
    {
        MyWebView.Visibility = Visibility.Collapsed;
        MyWebView.Visibility = Visibility.Visible;
        MyWebView.Focus(FocusState.Keyboard);  //here I'm using the keyboard method which worked for me we can go with programmatic method as well.
    }

在代码隐藏文件中,我们使用了NavigationCompleted,一旦WebView成功加载所需的内容,它就会被调用,然后我们将Visibility折叠并再次可见,这将有助于将焦点设置为WebView并侦听keyDown事件。
希望这对你有帮助,编码快乐!!!

相关问题