无法在 userControl 中使 TextBox 自动对焦

Unable to make TextBox in userControl auto focus

我正在使用用户控件中的文本框,它将在主 window 中显示为弹出窗口。现在的问题是当弹出窗口打开时,文本框应该自动聚焦。

我尝试使用 control.Focus() 和 FocusManager.FocusedElement="{Binding ElementName=TextBoxName}" 但没有用。显示光标的弹出窗口,但直到我手动聚焦它时,字符才进入其中。

<TextBlock FontSize="16" Margin="5,0,0,3" VerticalAlignment="Center" HorizontalAlignment="Left" Text="e.g. Name" 
                                   Visibility="{Binding ElementName=TextBoxName, Path=Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}}"/>
                        <TextBox x:Name="TextBoxName" 
                                 Text="{Binding Name}"
                                 BorderThickness="0" 
                                 Foreground="Black" 
                                 FocusManager.FocusedElement="{Binding ElementName=TextBoxName}" 
                                 MaxLength="100" 
                                 FontSize="16" 
                                 Margin="3,1,1,1"  
                                 BorderBrush="Transparent"
                                 VerticalContentAlignment="Center" 
                                 HorizontalContentAlignment="Left" 
                                 TextChanged="TextBoxName_OnTextChanged"
                                 Height="35">
                            <TextBox.InputBindings>
                                <KeyBinding Key="Enter" Command="{Binding CreateCommand}"/>
                            </TextBox.InputBindings>
                        </TextBox>

请有人帮忙。

可能有更优雅的方法,但我以前用一个简短的代码来做到这一点。

我为 TextBox 的 Loaded 事件添加事件处理程序:

在XAML中:

<TextBox... Loaded="TextBox_Loaded">

后面的代码:

private void TextBox_Loaded(object sender, RoutedEventArgs e)
{
    Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(delegate ()
    {
         Keyboard.Focus(TextBoxName);
    }));
}