在WPF中,有两种将焦点设置到元素的方法。
您可以调用输入元素的.Focus()方法,也可以使用输入元素作为参数来调用Keyboard.Focus()。
// first way:
item.Focus();
// alternate way:
Keyboard.Focus(item);
两者有什么区别?在某些情况下,是否有特殊原因要使用其中一个而不是另一个?
到目前为止,我没有发现任何区别-无论使用哪种方法,该项目始终具有逻辑焦点和键盘焦点。
最佳答案
item.Focus()
做的第一件事之一就是调用Keyboard.Focus( this )
。如果失败,则按decasteljau的回答呼叫FocusManager
。
以下内容是从Reflector的反骚扰者视图复制的。
这是来自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;
}
来自
ContentElement
:public bool Focus()
{
return (Keyboard.Focus(this) == this);
}
关于.net - Keyboard.Focus(item)和item.Focus()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/197088/