Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从我的页面导航后,WinRt App keyUp和keyDown事件不起作用_C#_.net_Winrt Xaml - Fatal编程技术网

C# 从我的页面导航后,WinRt App keyUp和keyDown事件不起作用

C# 从我的页面导航后,WinRt App keyUp和keyDown事件不起作用,c#,.net,winrt-xaml,C#,.net,Winrt Xaml,我在页面上处理KeyDown和KeyUp事件的代码: protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); Window.Current.CoreWindow.KeyDown += GameArea_KeyDown; Window.Current.CoreWindow.

我在页面上处理KeyDown和KeyUp事件的代码:

    protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
                Window.Current.CoreWindow.KeyDown += GameArea_KeyDown;
                Window.Current.CoreWindow.KeyUp += GameArea_KeyUp;

        }
        protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            base.OnNavigatedFrom(e);

                Window.Current.CoreWindow.KeyDown -= GameArea_KeyDown;
                Window.Current.CoreWindow.KeyUp -= GameArea_KeyUp;


        }
        ....
我的申请书有两页。这是第一页和第二页。在第1页上,我有一个按钮用于导航到第2页。在第二页我有两个元素。它们是:按钮2,用于进入第1页和GameArea元素。我使用MVVM和comands在页面上导航


我的工作步骤:在第1页上,我单击按钮1并导航到第2页。在第2页,我在GameArea元素中处理了KeyUp和KeyDown事件。完成一些工作后,我点击按钮2并返回页面1。在第1页上,我再次单击按钮1并转到第2页,但KeyUp和KeyDown事件不起作用。我等了几秒钟(30-50秒),然后在键盘上键入了一些键。在那之后,关键的上升/下降事件运作良好

keyUp和keyDown事件发生了什么


很抱歉我的英语不好。

这是因为使用MVVM和命令导航后,UI线程被阻止。 如果我使用dispatcher进行导航,那么问题就解决了

 public void NavigateTo<TPage>(object parameter)
    {
        if (_rootFrame != null)
        {
            CoreDispatcher dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher;

            dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                                () => _rootFrame.Navigate(typeof(TPage), parameter));
        }
    }
public void NavigateTo(对象参数)
{
if(_rootFrame!=null)
{
CoreDispatcher dispatcher=CoreApplication.MainView.CoreWindow.dispatcher;
dispatcher.RunAsync(CoreDispatcherPriority.Normal,
()=>_rootFrame.Navigate(typeof(TPage),参数));
}
}

您能否澄清您对问题的描述?对我来说,有点不清楚发生了什么,也许你应该在一个有序的列表中列出重现问题所需的步骤。但是,代码对我来说似乎是正确的,您确定没有调用您的方法吗?你是怎么测试的?您是否尝试在GameArea_KeyDown和GameArea_keydup方法中设置断点?是的。我在GameArea_KeyDown/keydup方法中设置了断点,但在导航之后,我没有被输入到这些处理程序中。我的应用程序上有两个页面。这是第1页和第2页。在第1页,我有一个按钮1用于导航到第2页,在第2页,我有一个按钮2用于导航到第1页。我的工作步骤:在第1页,我单击按钮1并导航到第2页。在第2页上,我在一个元素游戏区中处理了keypup和keypdown事件。完成一些工作后,我单击按钮2并返回页面1。在第1页上,我再次单击按钮1并转到第2页,但KeyUp和KeyDown事件不起作用。我想,这可能是因为焦点。因为在我点击一个按钮2(按钮2位于GameArea元素的顶部)之后,这个按钮有一个焦点。在我导航到第1页并返回到第1页之后,GameArea元素的焦点就丢失了。