FocusScope学习一: Logic Focus与Keyboard Focus

转载 2012年03月28日 21:39:43

Logic Focus与Keyboard Focus
http://www.cnblogs.com/Code-life/archive/2009/12/06/1618017.html

1.定义
Keyboard Focus可以理解为物理焦点。就是整个桌面上可以响应键盘输入的地方,整个桌面在某个时刻只可能有一个地方能接受键盘的输入,因此整个桌面在某个时刻只可能有一个Keyboard Focus.

Logic Focus从字面上理解是逻辑焦点。一般带“逻辑”字眼的东西都有可能是“虚”的,在这里也不例外。
Logic Focus并不是真正的焦点。它只是在桌面上某个范围内,在该范围未获得物理焦点之前,该范围默认的在该范围之内的“焦点”,当该范围获得物理焦点时,会首先将物理焦点分配给逻辑焦点所在的地方。这个“范围”称作Focus Scope.  在WPF中默认被设置成的Focus Scope有 Window, MenuItem, ToolBar, and ContextMenu。也可以手动设置某个控件成为Focus Scope(通过设置FocusManager.IsFocusScope附加属性或调用FocusManager.SetFocusScope方法)。和Keyboard Focus对应,每一个Focus Scope内只有一个Logic Focus.

综上所述Keyboard Focus与Logic Focus不是任何时候都相等,Keyboard Focus只和同一个Focus Scope内的Logic Focus相等。

2.API
WPF中提供Keyboard类和FocusManager类来分别管理Keyboard Focus和Logic Focus.通过这个两个类可以Set和Get相应类型的Focus(FocusManager还可以Set和Get Focus Scope)以及提供相应类型Event.

3. Focus的改变
1)用户的操作会改变Keyboard Focus,同时也会改变同一个Focus Scope内的Logic Focus。
2)通过Keyboard和FocusManager中提供的API可以改变相应类型的Focus。
3)通过控件的Focus方法可以改变Focus Scope内的Logic Focus,如果Keyboard Focus也在此Focus Scope中则同时也会改变Keyboard Focus.
4)通过控件的MoveFocus方法可以改变Keyboard Focus(调用该方法时需要传递一个TraversalRequest来指示移动的方向,TraversalRequest中包含指示移动方向的FocusNavigationDirection 枚举对象)

Linux上的U盘自动挂载的底层详细过程

在开始讲U盘自动挂载的底层详细过程之前,首先得明白U盘的弹出和umount是不一样的,umount后我们还可以mount上再次使用,我们的u盘的设备还在,但弹出u盘后,我们想使用就必须拔出在重新插入u...
  • du_qi
  • du_qi
  • 2017年05月29日 17:33
  • 883

qml的focus问题

It is headache issue of focus in application. If there is no focus item, the key event can't be hand...
  • zevolo
  • zevolo
  • 2012年06月19日 14:53
  • 2155

SearchView Get focus and pop soft keyboard

使用SearchView时,会碰到这种情况,就是:你需要控制SearchView的可见状态,并且让它显示时就让它是展开的,并且获取focus和pop soft keyboard。那你就可以考虑一下使用...

[学习记号 - MVVM] 在ViewModel里设置Textbox焦点(focus)

问题: 设置输入框焦点Textbox.focus()本应该是View的事,为什么要放在ViewModel里设置? 情景假设: 登录模块中,用户输入用户名后,调用WCFRiaService异步验证...
  • sear
  • sear
  • 2011年10月27日 16:11
  • 1395

哈佛公开课《Positive Psychology 1504》学习笔记 -- FOCUS

1    Focus 1.1    Focus create reality 1.1.1    NOTES 1.    Happiness is not contingent on our st...

jQuery中blur和focus

  • 2014年01月25日 14:39
  • 2KB
  • 下载

Listview点击事件失效问题解决以及每个Item 子控件获取focus

最近在写一个开源的播放器,碰到了一问题,就是listview在自定义item的内容之后点击出现无效,后来才发现原来是因为当item里面包含了子控件,例如TextView、Button等之后,子控件会优...
  • lansus
  • lansus
  • 2015年09月06日 09:23
  • 1839

苹果MACOS下调景深软件Focus12

  • 2013年10月12日 09:01
  • 7.22MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FocusScope学习一: Logic Focus与Keyboard Focus
举报原因:
原因补充:

(最多只允许输入30个字)