Focus scope in WPF
默认情况下,routed command向上路由,当它发现一个新的focus scope时,会已新的focus scope为根,跳到新的focus scope下那个获得焦点的control.这就是为什么工具栏,菜单栏的menu item command可以被窗口中的text box捕捉到,因为工具栏,菜单栏默认就是一个新的FocusScope;与主窗口不在同一个focusScope 下。
具体可见:
http://msdn.microsoft.com/en-us/magazine/cc785480.aspx
http://pointlessly.blogspot.com/2007/11/wpf-routed-commands-and-focus-scope.html
http://wangmo.wordpress.com/2008/11/09/routedcommand-focus-scope/
还要注意到:在一个新的FocusScope(非主窗口focusScope)中button无法通过click获得keyboard focus;当我们click 一个button,mouse down时抛出GetKeyBoardFocus事件,mouse up时就会抛出LostKeyBoardFocus事件。这个是跟菜单栏的button一致的;菜单栏中的button click后也不能获得keyboard focus, 只能通过tab键来获得键盘焦点。
具体可见:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/90663afa-dfd9-458a-8261-eca43be339e6
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步