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 枚举对象)

QML类型说明-FocusScope

FocusScope ImportStatement:   import QtQuick 2.2 Inherits:      Item   DetailedDescription 在创建可...
  • Vampire_Armand
  • Vampire_Armand
  • 2014年09月09日 15:24
  • 1165

FocusScope学习三: 对FocusScope 的探究与总结

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/f5de6ffc-fa03-4f08-87e9-77bbad752033/ 这个...
  • puncha
  • puncha
  • 2012年03月28日 22:15
  • 1683

QML FocusScope的问题

在Qt4.8.4中,官方有一个叫searchbox的QML使用FocusScope制作的例子. 运行过的应该知道,这个例子实际上有bug存在,顶层的focusscope的focus被置为true时输...
  • yuxiaohen
  • yuxiaohen
  • 2013年05月21日 15:47
  • 3652

键盘焦点和逻辑焦点(Logic Focus与Keyboard Focus )

键盘焦点和逻辑焦点(Logic Focus与Keyboard Focus ) 键盘焦点和逻辑焦点(Logic Focus与Keyboard Focus ) 1.定义 Keyb...
  • LongtengGensSupreme
  • LongtengGensSupreme
  • 2017年09月28日 14:50
  • 156

FocusScope学习二: 很好的理解FocusScope的工作原理

http://www.codeproject.com/Articles/38507/Using-the-WPF-FocusScope Introduction Often, it is...
  • puncha
  • puncha
  • 2012年03月28日 21:58
  • 2665

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
  • 2278

QML ---- Keyboard Focus in QML --- 键盘交互

当一个键被按或者释放的时候,一个Key事件就被创建并且传递给当前 QML中焦点Item。   1. 按键处理概述 当用户按或者释放一个按键的时候,如下将发生: QT 接受到按键动作,并且产...
  • zhangmingxingwei
  • zhangmingxingwei
  • 2013年06月01日 11:47
  • 2249

focus and keyboard hide

private OnTouchListenermHideKeyBroadTouchListener =new OnTouchListener(){ @Overridepublic boolean on...
  • cgaanns
  • cgaanns
  • 2011年03月22日 14:20
  • 249

对焦与变焦的区别(the difference of focus and zoom)

对焦(focus)和变焦(zoom)是一对容易混淆和让人困惑的摄影术语,尤其对于非专业的摄影爱好者。通常,对焦(调焦)分为focus near和focus near,变焦分为zoom out 和zoo...
  • cruelchen
  • cruelchen
  • 2013年07月12日 11:05
  • 2946

js focus 与 click 的时间顺序

focus 会比click 先执行
  • ISaiSai
  • ISaiSai
  • 2017年04月07日 14:10
  • 679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:FocusScope学习一: Logic Focus与Keyboard Focus
举报原因:
原因补充:

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