无法设置元素的焦点

时间:2010-09-19 19:21:11

标签: wpf textbox stackpanel expander focusmanager

我有一个扩展器,其内容由StackPanel组成,其中包含多个元素,其中一个元素是TextBox

我想,当Expander扩展TextBox应该获得键盘焦点时,我该怎么做?

我试过了:

Private Sub xp_Expanded(sender As Object, e As RoutedEventArgs) _
    Handles xpUnits.Expanded
        stackPanel.Focus()
        Keyboard.Focus(textBox)
  textBox.Focus()
End Sub

我甚至尝试将FocusManager.IsFocusableFocusManager.FocusedElement设置为TextBox,然后调用stackPanel.Focus(),但它没有完成任务。

2 个答案:

答案 0 :(得分:4)

当您尝试设置焦点时,您的TextBox可能尚未显示。您应该为IsVisibleChanged添加TextBox的事件处理程序,并将焦点设置在那里。在xp_Expanded内部,你应该设置一个布尔标志,TextBox应该在下次调用IsVisibleChanged事件处理程序时聚焦。

答案 1 :(得分:0)

This answer轻松解决了我的问题:

<TextBox Text="{Binding Title}"
  FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>