C# 从我的页面导航后,WinRt App keyUp和keyDown事件不起作用
我在页面上处理KeyDown和KeyUp事件的代码: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.
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元素的焦点就丢失了。