繁体   English   中英

如何将键盘焦点设置到 WPF 中用户控件内的文本框?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM