1

我有一个扩展器,它的内容由 a 组成,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.IsFocusableand设置FocusManager.FocusedElementTextBox, 然后调用stackPanel.Focus(),但它没有完成这项工作。

4

2 回答 2

4

当您尝试设置焦点时,您可能TextBox还不可见。IsVisibleChanged您应该为您添加一个事件处理程序TextBox并在那里设置焦点。在里面xp_Expanded你应该设置一个布尔标志,TextBox下次IsVisibleChanged调用事件处理程序时应该关注它。

于 2010-09-19T20:33:27.080 回答
0

这个答案很容易解决了我的问题:

<TextBox Text="{Binding Title}"
  FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>
于 2010-11-19T00:17:30.873 回答