我有这个要求,当用户按下标签时,我需要将第一个元素集中在扩展器内。
当前(默认行为)焦点转到扩展器,我尝试通过在扩展器中创建焦点事件处理程序来聚焦扩展器的第一个元素,如下所示:
private void ExpanderGotFocus(object sender, RoutedEventArgs e)
{
var expander = (Expander) sender;
if (!expander.IsExpanded)
{
expander.IsExpanded = true;
this._someText.Focus();
}
}
这是行不通的。
我还尝试将焦点放在下一个元素:
var tRequest = new TraversalRequest(FocusNavigationDirection.Next);
var keyboardFocus = Keyboard.FocusedElement as UIElement;
keyboardFocus.MoveFocus(tRequest);
但只能第二次工作(当扩展器至少打开一次时)
我试图把它放在一个线程和其他一些疯狂的想法中。
如何将焦点放在扩展器内的第一个元素上?(第一次关闭膨胀机)