Невозможно установить фокус элемента - PullRequest
1 голос
/ 19 сентября 2010

У меня есть Expander, его содержимое состоит из 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.IsFocusable и FocusManager.FocusedElement на TextBox, затем вызвать stackPanel.Focus(), но это не сработало.

Ответы [ 2 ]

4 голосов
/ 20 сентября 2010

Возможно, ваш TextBox еще не виден, когда вы пытаетесь установить фокус.Вы должны добавить обработчик событий для IsVisibleChanged к вашему TextBox и установить фокус там.Внутри xp_Expanded вы просто должны установить логический флаг, что TextBox должен быть сфокусирован при следующем вызове обработчика события IsVisibleChanged.

0 голосов
/ 19 ноября 2010

Этот ответ легко решил мою проблему:

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