none
如何响应SwapChainBackgroudPanel 的KeyUp 和KeyDown事件 RRS feed

  • 问题

  • 我现在在开发一个应用,用到了SwapChainBackGroundPanel,因为我需要在这个页面处理一些鼠标键盘事件,但是我发现所有的鼠标事件都可以正常的被触发,但是Keyboard的事件不能被触发。后来在MSDN看到了说SwapChainBackgroudPanel上不能设置焦点,所以不能触发键盘事件,原文如下:虽然 SwapChainBackgroundPanel 是 UIElement 派生类,但是投影和转换 API 对其呈现的表示形式没有任何影响。此外,SwapChainBackgroundPanel 不从 Control 类继承,因此,您无法强制焦点切换到此元素。依赖于焦点的事件可能不起作业,如 KeyUp 和 KeyDown

    所以请问如何才能在这个页面上获取键盘事件呢?  谢谢

    链接:http://msdn.microsoft.com/library/windows/apps/Hh702626


    2013年8月15日 12:03

答案

全部回复

  • 我尝试了一种方法,就是响应Windows::UI::Core::CoreWindow 的键盘事件,在SwapChainBackgroudPanel所在的页面响应OnNavigatedTo事件,在处理函数中绑定事件处理函数,在OnNavigatedFrom中取消键盘事件绑定。这样就能解决不能捕获键盘事件的问题。

    不知道还有没有其他的解决方法。

    2013年8月16日 1:22
  • Hi,wd0623

    可以让SwapChainBackgroudPanel控件下的子控件获得焦点,这样也能触发SwapChainBackgroudPanel的KeyUp和KeyDown事件。因为KeyUp和KeyDown是冒泡路由事件,当子控件没有触发的时候,可以以冒泡的方式向根节点方向延伸,直到某个父控件触发这个事件为止!

    具体路由事件的有关信息请参考以下链接里的文档:

    http://msdn.microsoft.com/en-us/library/windows/apps/hh758286.aspx


    2013年8月16日 9:01
    版主