我有一个扩展器,其内容由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()
,但它没有完成任务。
答案 0 :(得分:4)
当您尝试设置焦点时,您的TextBox
可能尚未显示。您应该为IsVisibleChanged
添加TextBox
的事件处理程序,并将焦点设置在那里。在xp_Expanded
内部,你应该设置一个布尔标志,TextBox
应该在下次调用IsVisibleChanged
事件处理程序时聚焦。
答案 1 :(得分:0)
This answer轻松解决了我的问题:
<TextBox Text="{Binding Title}"
FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>