WPF的焦点

WPF中的焦点

WPF中的焦点分两种:键盘焦点逻辑焦点
很多人刚开始不理解,为什么有两个焦点?
这两个焦点有什么区别?
我应该用哪个?
今天就来讲解一下WPF中的焦点。嗯,看到常见应用那里你就会豁然开朗的。哈哈哈。

一、结论

先说结论:键盘焦点是真焦点,逻辑焦点是假焦点。

我们理解的获得焦点是指:一个控件获得焦点后,将处于活动状态。
键盘焦点就是我们通常说的真焦点,当控件获得键盘焦点后,将处于活动状态。
控件获得逻辑焦点时,并不能保证处于活动状态。

二、概念

1.键盘焦点

键盘焦点就是我们常识中的焦点。
当一个控件获得键盘焦点时,这个控件将处于活动状态。
整个桌面上只能有一个键盘焦点,获得键盘焦点的元素,才可以接受键盘输入。

2.逻辑焦点和焦点范围

逻辑焦点:用于记录键盘焦点在焦点范围中的位置。
焦点范围:逻辑焦点可以活动的范围,逻辑焦点不能离开焦点范围。

键盘焦点离开焦点范围时,逻辑焦点不会跟随键盘焦点离开,而是保留在离开时的位置,当键盘焦点回到这个焦点范围时,首先会回到逻辑焦点所在的位置。

三、常见应用

逻辑焦点的应用在多个窗体间交互最为直观。

每当你在网页上的某个输入框准备输入内容时,切换到其他网页或软件,再回到刚才的网页,你会发现,你的光标还是在这个输入框内。为什么他能记住你光标之前的位置呢?我们总是想当然以为,本来就该是这样啊。其实这就是因为窗体中保留了逻辑焦点
你可以直接开两个网页,然后切换看看就知道了。很简单。

键盘焦点回到焦点范围时,逻辑焦点所在控件首先获得键盘焦点
通过这个例子,相信各位瞬间就能理解这三个概念了吧。

四、焦点管理

FcousManager类

FocusManager类为焦点管理提供了两个附加属性。

1.FocusedElement

指定一个控件,当打开这个画面时,这个控件自动获得键盘焦点。

2.IsFocusScope

设置这个附加属性的控件是否建立焦点范围。
如果设置为True,则这个控件内形成一个焦点范围。当焦点离开这个范围时,内部的子控件将会保留逻辑焦点。

以及一些管理焦点的方法:

FcousManager.GetFocusScope()方法

使用该方法返回最近一个焦点范围。

FocusManager.GetIsFocus()方法

指定控件是否时焦点范围。

FocusManager.SetFocused()方法

使一个控件获得逻辑焦点。

注意:要获得焦点的前提是,Focusable属性为True。

其他管理焦点的方法

Keyboard.Focus()方法

尝试为指定控件获得键盘焦点

Control.Focus()方法

尝试为指定控件获得键盘焦点

IsFocused

检测是否获得逻辑焦点

IsKeyboardFocused

检测是否获得键盘焦点

对你有帮助吗?点个赞吧~

猜你喜欢

转载自blog.csdn.net/qq_42068856/article/details/103097137