[英]WinRt App keyUp and keyDown events does not working after navigated from my page
我用於處理頁面上的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;
}
....
我的申請中有2頁。 這是Page1和Page2。 在Page1上,我有一個按鈕可以導航到Page2。 在Page2上,我有2個元素。 它們是:button2,用於進入第1頁和GameArea元素。 我正在使用MVVM和comands來導航頁面。
我的工作步驟:在Page1上,單擊button1並導航到Page2。 在Page2上,我使用GameArea元素中的KeyUp和KeyDown事件。 完成一些工作后,我單擊了button2,然后返回到Page1。 在Page1上,我再次單擊button1並轉到Page2,但是KeyUp和KeyDown事件不起作用。 我等了幾秒鍾(30-50),然后在鍵盤上鍵入了一些鍵。 之后,按鍵向上/向下事件運行良好。
keyUp和keyDown事件發生了什么?
我為我的英語不好對不起。
發生這種情況的原因是,在使用MVVM和命令進行導航之后-UI線程被阻止。 而且,如果我使用調度程序進行導航,那么問題就解決了。
public void NavigateTo<TPage>(object parameter)
{
if (_rootFrame != null)
{
CoreDispatcher dispatcher = CoreApplication.MainView.CoreWindow.Dispatcher;
dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() => _rootFrame.Navigate(typeof(TPage), parameter));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.