簡體   English   中英

從我的頁面導航后,WinRt App的keyUp和keyDown事件不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM