首页 文章

是否有Silverlight 4控件的默认键盘行为参考? [关闭]

提问于
浏览
34

在官方的Microsoft文档中,只有一个段落提到了控件对键盘的行为(至少我能找到的):

http://msdn.microsoft.com/en-us/library/cc189015(v=VS.95).aspx#inputting_text

文本输入和控件某些控件通过自己的处理对键盘事件做出反应 . 例如,TextBox是一个控件,用于捕获然后直观地表示使用键盘输入的文本,它在自己的逻辑中使用KeyUp和KeyDown来捕获击键,然后在文本中引发自己的TextChanged事件 . 实际上改了 . 您仍然可以将KeyUp和KeyDown的处理程序添加到TextBox或任何旨在处理文本输入的相关控件 . 但是,作为其预期设计的一部分,控件可能不会响应通过键事件定向到它的所有键值 . 行为特定于每个控件 . 例如,ButtonBase(Button的基类)处理KeyUp,以便它可以检查SPACEBAR或ENTER键,它认为它等同于鼠标左键按下以提升Click事件 . 事件的处理是通过ButtonBase覆盖虚拟方法OnKeyUp来完成的,并且在其实现中它设置Handled = true . 结果是,在空格键的情况下,监听键事件的按钮的任何父节点都不会为其自己的处理程序接收已处理的事件 . 另一个例子是TextBox . 诸如ARROW键之类的某些键不被TextBox视为文本,而是被视为特定于控件UI行为,而TextBox将这些事件案例标记为已处理 . 自定义控件可以通过重写OnKeyDown / OnKeyUp为键事件实现自己类似的覆盖行为 . 如果您的自定义控件处理特定的加速键,或者具有与TextBox描述的场景类似的控件或焦点行为,则应将此逻辑放在您自己的OnKeyDown / OnKeyUp覆盖中 .

在任何地方都有更完整的参考吗?

例如,在AutoCompleteBox中,您可以导航到按向上/向下的建议,并选择按下输入等等 .

当然必须有一个更好的方法,而不是集中每一个控件并按下键盘上的每一个键来找出:)

3 回答

  • 1

    查看源代码\ Reflector .

    在控件文本处理中有很多怪癖,我怀疑任何人都会关注这个 . 例如,当用户在控件中存在文本时按下BackSpace时不会触发TextBox的KeyDown事件,但是当没有文本等时触发,则触发 . 找到工作原理的最快方法是挖掘源代码 .

    我已经找到了一个很好的规则:如果由于某种原因你需要知道一些控件的行为是什么,一些情况不会浪费你的时间来尝试编码(重现)这种情况,只需得到Reflector并查看源代码 .

  • 0

    这是官方ms短片的链接,http://support.microsoft.com/kb/126449 t他们正在为Windows 8添加http://www.itworld.com/software/203881/windows-8-metro-keyboard-shortcuts-and-tips希望这有助于

  • 1

    这些是您正在寻找的无人机吗? http://www.silverlight.net/archives/videos/keyboard-control

相关问题