【发布时间】:2013-06-21 18:16:11
【问题描述】:
我在页面上处理 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 页。这是第 1 页和第 2 页。在 Page1 上,我有一个用于导航到 Page2 的按钮。在 Page2 我有 2 个元素。它们是: button2 用于进入 Page 1 和 GameArea 元素。我正在使用 MVVM 和命令在页面上导航。
我的工作步骤:在第 1 页上,我单击按钮 1 并导航到第 2 页。在 Page2 上,我使用 GameArea 元素中的 KeyUp 和 KeyDown 事件。经过一番工作,我单击了 button2 并返回到 Page1。在 Page1 上,我再次单击 button1 并转到 Page2,但 KeyUp 和 KeyDown 事件不起作用。我等了几秒钟(30-50)并在键盘上键入了一些键。之后,按键向上/向下事件运行良好。
keyUp 和 keyDown 事件发生了什么?
我很抱歉我的英语不好。
【问题讨论】:
-
您能否澄清您对问题的描述?对我来说,有点不清楚发生了什么,也许您应该在有序列表中列出重现问题所需的步骤。但是,代码对我来说似乎是正确的,你确定你的方法没有被调用吗?你是怎么测试的?您是否尝试在 GameArea_KeyDown 和 GameArea_KeyUp 方法中设置断点?
-
是的,我做到了。我在 GameArea_KeyDown/KeyUp 方法中设置了断点,但导航后我没有输入到这些处理程序中。
-
我的申请有 2 页。这是一个 Page1 和一个 Page2。在 Page1 我有一个 button1 用于导航到 Page2,在 Page2 我有一个 button2 用于导航到 Page1。
-
我的工作步骤: 在第 1 页上,我单击按钮 1 并导航到第 2 页。在 Page2 上,我在一个元素 GameArea 上处理了 KeyUp 和 KeyDown 事件。完成一些工作后,我单击按钮 2 并返回到 Page1。在 Page1 上,我再次单击 button1 并转到 Page2,但 KeyUp 和 KeyDown 事件不起作用。
-
也许,我想,是因为专注。因为在我点击了 button2 之后(button2 在 GameArea 元素的顶部),这个按钮就有了焦点。在我导航到 Page1 并返回到 Page1 之后,GameArea 元素的焦点就丢失了。
标签: c# .net winrt-xaml