Shimmy Weitzhandler
Shimmy Weitzhandler

Reputation: 104721

Unable to set focus of an element

I have an Expander that its content consists of a StackPanel that contains several elements one of whom is a TextBox.

I want, that when the Expander expands that TextBox should gain keyboard focus, how do I do this?

I tried:

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

I even tried to set FocusManager.IsFocusable and FocusManager.FocusedElement to the TextBox, then call stackPanel.Focus(), but it didn't do the job.

Upvotes: 1

Views: 2847

Answers (2)

Shimmy Weitzhandler
Shimmy Weitzhandler

Reputation: 104721

This answer solved my issue easily:

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

Upvotes: 0

user128300
user128300

Reputation:

Probably your TextBox is not yet visible when you try to set the focus. You should add an event handler for IsVisibleChanged to your TextBox and set the focus there. Inside xp_Expanded you just should set a boolean flag that the TextBox should be focused the next time the IsVisibleChanged event handler is called.

Upvotes: 4

Related Questions