2

当我打开窗口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>

谢谢

4

2 回答 2

1

WPF 的 UserControl 继承了具有FrameworkElement.OnGotFocus方法的 FrameworkElement。因此,您可以按如下方式使用它(在 C# 中):

protected override void OnGotFocus(RoutedEventArgs e)
{
    base.OnGotFocus(e);

    FocusManager.SetFocusedElement(Window.GetWindow(this), this.TextBoxToPutFocusOn);
}
于 2022-02-07T00:57:26.403 回答
0

我通过在用户控件中设置以下属性来做到这一点:

<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}">
于 2022-02-16T10:44:48.250 回答