逻辑焦点和键盘焦点之间有什么区别?

时间:2017-03-08 18:21:30

标签: wpf focus

在研究我在Focus(在WPF中)遇到的问题时,我在FocusManager Class中看到了这个描述。我担心第5和第6段失去了我。

有人可以用简单的术语解释最后两段吗?

TIA

  

在Windows Presentation Foundation(WPF)中有两个概念   关注焦点:键盘焦点和逻辑焦点。

     

键盘焦点   属于当前正在接收键盘输入的元素。   键盘焦点只能有一个元素。这个元素有   键盘焦点将IsKeyboardFocused设置为true。   Keyboard.FocusedElement返回具有键盘焦点的元素。

     

逻辑焦点属于一个中的FocusManager.FocusedElement   具体的重点范围。

     

焦点范围是保留的容器元素   跟踪其范围内的FocusManager.FocusedElement。默认情况下,   Window类是一个焦点范围,Menu,ContextMenu和   ToolBar类。作为焦点范围的元素具有IsFocusScope   设为true。

     

可以有多个具有逻辑焦点的元素,但是   在一个焦点内只能有一个具有逻辑焦点的元素   范围。具有逻辑焦点的元素不一定具有   键盘焦点,但具有键盘焦点的元素将具有逻辑性   焦点。可以在焦点范围内定义焦点范围。在   在这种情况下,父焦点范围和子焦点范围都可以   有一个FocusManager.FocusedElement。

     

以下方案说明   Windows演示文稿中键盘焦点和逻辑焦点的变化方式   具有带TextBox和a的Window的Foundation(WPF)应用程序   具有MenuItem的菜单。当键盘焦点改变时   TextBox到MenuItem,TextBox会丢失键盘焦点但保留   Window焦点范围的逻辑焦点。 MenuItem获得   键盘焦点并获得菜单焦点范围的逻辑焦点。   当键盘焦点返回到根窗口时,Window中的元素   具有逻辑焦点的焦点范围将获得键盘焦点,其中   这种情况是TextBox。 TextBox现在具有键盘焦点和   逻辑焦点。 MenuItem失去了键盘焦点,但保留了逻辑   专注于菜单焦点范围。

1 个答案:

答案 0 :(得分:3)

简而言之,应用程序或视图中可能有多个不同的焦点范围,但整个屏幕上只有一个元素可以使用键盘焦点。

在每个焦点范围内,最多可能有一个具有逻辑焦点的元素。因此,如果您在视图中说明了4个焦点范围,那么您最多可以拥有4个元素,这些元素具有逻辑焦点,但其中只有一个可能具有键盘焦点。

键盘焦点是指当前正在接收键盘输入的元素。当键盘焦点离开特定的焦点范围时,聚焦的元素将失去键盘焦点,但将保持逻辑焦点。这意味着当键盘焦点返回到焦点范围时,焦点元素将再次获得键盘焦点。

因此,如果在焦点范围A中有两个元素,例如TextBox和Button,并且当您将光标放在另一个焦点范围B中的另一个TextBox中时,其中一个元素具有键盘焦点,则TextBox是范围A仍然具有焦点范围内的逻辑焦点A焦点范围B中的TextBox具有键盘焦点。

希望这是有道理的。