当我从 XBOX 上的“游戏和应用程序”选项卡重新启动应用程序时出现焦点导航问题

问题描述 投票:0回答:1

当我使用“远程机器”方法从 XBOX 控制台上的 Visual Studio 启动应用程序时,我可以使用游戏手柄进行导航,并能够获取相同的“KeyDown”事件。但是,当我关闭应用程序并从“游戏和应用程序”选项卡再次启动它时,一旦应用程序完全加载,然后如果我尝试使用游戏手柄进行导航,我将无法进行导航,也无法进行“keyDown” “事件根本没有被触发。

我需要单击控制器上的“XBOX 按钮”并关闭侧面菜单,然后我就可以正常导航而不会出现任何问题。但为什么应用程序启动后我无法进行导航。

我认为这可能是由于一些焦点问题,所以我添加了相应的代码,但仍然面临同样的问题。对于用户来说,这是一种被阻止的情况,因为即使单击 B 按钮,他也无法退出应用程序。

mainpage.xaml.cs:

protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            MyWebView.Focus(FocusState.Programmatic);
        }

对于网络视图,我使用以下代码。

mainpage.xaml:

<Grid>
    <WebView x:Name="MyWebView"
         Source="...">
    </WebView>
</Grid>
c# xaml uwp xbox
1个回答
0
投票

在进行了一些研究并浏览了 XBOX 开发的所有 Microsoft 文档后,我发现了一个 Stack Overflow 问题,其中提到了相同的问题,但在不同的场景中,并使用该方法在此 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 成功加载所需内容,就会调用它,然后我们使可见性再次折叠和可见,这将有助于将焦点设置在到 WebView 并监听
keyDown
事件。

希望这对您有所帮助,祝您编码愉快!!!

© www.soinside.com 2019 - 2024. All rights reserved.