[英]How to set keyboard focus to a textbox inside a user control in WPF?
当我打开窗口MyWindow时,我想让我的键盘光标指向包含在窗口中的用户控件中的文本框。
通常,您会设置FocusManager.FocusedElement={Binding ElementName=TextBoxToPutFocusOn}
。
但是在这里,我的限制是文本框在我的窗口内的用户控件内。
我的窗口如何将焦点设置到此文本框?
为了说明,这里是我的 2 个文件:
我的窗口.xaml
<Window
xmlns:wpf="clr-namespace:MyWPFNamespace">
<StackPanel>
<TextBlock>Sample text</TextBlock>
<wpf:SpecialTextBox/>
</StackPanel>
</Window>
特殊文本框.xaml
<UserControl
x:Class="MyWPFNamespace.SpecialTextBox"
x:Name="SpecialName">
<TextBox
x:Name="TextBoxToPutFocusOn" />
</UserControl>
谢谢
WPF 的 UserControl 继承了具有FrameworkElement.OnGotFocus方法的 FrameworkElement。 因此,您可以按如下方式使用它:
protected override void OnGotFocus(RoutedEventArgs e)
{
base.OnGotFocus(e);
FocusManager.SetFocusedElement(Window.GetWindow(this), this.TextBoxToPutFocusOn);
}
我通过在用户控件中设置以下属性来做到这一点:
<UserControl
x:Class="MyWPFNamespace.SpecialTextBox"
x:Name="SpecialName"
FocusManager.GotFocus="MyTextBox_OnGotFocus">'
在后面的代码中:
Private Sub TextBoxWithHint_OnGotFocus(sender As Object, e As RoutedEventArgs)
MyTextBox.Focus()
End Sub
最后,在MainWindow.xaml中:
<Window
FocusManager.FocusedElement="{Binding SpecialName}">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.