有没有Silverlight 4控件的默认键盘行为的参考?

在官方的Microsoft文档中,只有一个段落提到控件如何处理键盘(至less我能find):

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

文本input和控制

某些控件对自己处理的键盘事件做出反应。 例如,TextBox是一个控件,用于捕获并直观地表示通过使用键盘input的文本,它使用KeyUp和KeyDown以自己的逻辑捕获击键,然后在文本中引发自己的TextChanged事件实际上变了。 您通常仍然可以将KeyUp和KeyDown的处理程序添加到TextBox或用于处理文本input的任何相关控件。 但是,作为预期devise的一部分,控制可能不会响应通过关键事件指向的所有关键值。 行为是特定于每个控件。 作为一个例子,ButtonBase(Button的基类)处理KeyUp,以便它可以检查SPACEBAR或ENTER键,为了产生Click事件,它被认为相当于鼠标左键按下。 这个事件的处理是通过ButtonBase覆盖虚拟方法OnKeyUp来实现的,在它的实现中它设置了Handled = true。 结果是,在SPACEBAR的情况下侦听键事件的button的任何父母将不会收到其自己的处理程序已处理的事件。 另一个例子是TextBox。 有些键(如ARROW键)不被TextBox视为文本,而是被视为特定于控件UI行为,TextBox将这些事件事件标记为已处理。

自定义控件可以通过重写OnKeyDown / OnKeyUp来为关键事件实现自己的类似重写行为。 如果您的自定义控件处理特定的加速键,或者具有与为TextBox描述的场景类似的控件或焦点行为,则应该将此逻辑放在您自己的OnKeyDown / OnKeyUp覆盖中。

有没有更完整的参考资料?

例如在一个自动完成框中,你可以导航到build议上/下,并select一个按下input等等

肯定有一个更好的办法比聚焦每一个单一的控制和按键盘上的每一个键来找出:)

查看源代码\ Reflector。

控制文本处理有很多怪癖,我怀疑是否有人会关心这个文件。 比如TextBox的KeyDown事件在用户按下BackSpace的时候没有被触发,当控件中有文本的时候触发,而当没有文本的时候触发。最快的方法是find工作的最快方法是挖掘源代码。

我已经想出了一个很好的规则:如果由于某种原因,你需要知道一些控制行为将会是什么情况,而不是浪费你的时间来编码(复制)这种情况,只需要获得Reflector并查看源代码。

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