我创建了一个WPF UserControl,它处理其子控件的所有GotFocus
/ LostFocus
事件。我调用OnGotFocus
的{{1}} / OnLostFocus
,但UserControl的UserControl
属性不会设置:
IsFocused
我该如何设置?
答案 0 :(得分:3)
使用 UIElement.IsKeyboardFocusWithinChanged 事件,它应该可以完美运行。
答案 1 :(得分:2)
而不是IsFocused
,您可以使用IsKeyboardFocusWithin
答案 2 :(得分:0)
当相关控件从MSDN上的UIElement.GotFocus
Event页面获得逻辑焦点时,将调用GotFocus
方法:
如果通过使用方法调用故意强制聚焦但是先前的键盘焦点存在于不同的范围内,则逻辑焦点与键盘焦点不同。在这种情况下,键盘焦点保持原样,并且调用Focus方法的元素仍然可以获得逻辑焦点。
对此事件的更精确解释是,当路由中元素的IsFocused属性值从false更改为true时,将引发此事件。
由于此事件使用冒泡路由,因此接收焦点的元素可能是子元素,而不是实际附加事件处理程序的元素。检查事件数据中的Source以确定获得焦点的实际元素。 当用户点击UI中的相关控件和/或在代码中调用control.Focus()时,它将获得焦点。
IsFocused
为readonly
,无法设置。