在WPF中,有两种方法可以将焦点设置为元素.
您可以调用input元素的.Focus()方法,也可以使用input元素作为参数调用Keyboard.Focus().
// first way:
item.Focus();
// alternate way:
Keyboard.Focus(item);
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?在某些情况下,是否有特殊原因使用其中一个而不是另一个?
到目前为止,我注意到没有任何区别 - 无论使用哪种方法,该项目始终具有逻辑焦点以及键盘焦点.
Joe*_*ant 24
首先要做的事之一item.Focus()是打电话Keyboard.Focus( this ).如果失败了,那就调用FocusManager,就像decasteljau回答的那样.
以下内容从Reflector中的 disassambler视图中复制.
这来自UIElement(UIElement3D是相同的):
public bool Focus()
{
if (Keyboard.Focus(this) == this)
{
return true;
}
if (this.Focusable && this.IsEnabled)
{
DependencyObject focusScope = FocusManager.GetFocusScope(this);
if (FocusManager.GetFocusedElement(focusScope) == null)
{
FocusManager.SetFocusedElement(focusScope, this);
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这来自ContentElement:
public bool Focus()
{
return (Keyboard.Focus(this) == this);
}
Run Code Online (Sandbox Code Playgroud)
根据MSDN上的WPF文档:
在WPF中,有两个与焦点相关的主要概念:键盘焦点和逻辑焦点.键盘焦点是指接收键盘输入的元素,而逻辑焦点是指具有焦点的焦点范围中的元素.
和
具有键盘焦点的元素也将具有逻辑焦点,但具有逻辑焦点的元素不一定具有键盘焦点.
| 归档时间: |
|
| 查看次数: |
5029 次 |
| 最近记录: |