将焦点设置在WPF中的文本框上

如何设置WPF中的TextBox元素的焦点

我有这个代码:

 txtCompanyID.Focusable = true; txtCompanyID.Focus(); 

…但它不工作。

任何想法?

在XAML中:

 <StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}"> <TextBox Name="Box" /> </StackPanel> 

尝试FocusManager.SetFocusedElement

 FocusManager.SetFocusedElement(parentElement, txtCompanyID) 
 txtCompanyID.Focusable = true; Keyboard.Focus(txtCompanyID); 

MSDN:

整个桌面上只能有一个键盘焦点的元素。 在WPF中,具有键盘焦点的元素将IsKeyboardFocused设置为true。

您可以在设置行之后中断并检查IsKeyboardFocused属性的值。 还要检查你是否真的到达那条线,或者你可以设置一些其他的元素来获得焦点。

试试这个: MyTextBox.Focus ( );

目前还没有人解释为什么问题中的代码不起作用。 我的猜测是代码被放置在Window的构造函数中。 但是现在要确定重点还为时过早。 一旦窗口准备好进行交互,就必须完成。 代码的最佳位置是Loaded事件:

 public KonsoleWindow() { public TestWindow() { InitializeComponent(); Loaded += TestWindow_Loaded; } private void TestWindow_Loaded(object sender, RoutedEventArgs e) { txtCompanyID.Focus(); } } 

这一切都没有为我工作,因为我使用的是网格而不是StackPanel。

我终于find了这个例子: http : //spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/

并将其修改为:

在“资源”部分:

  <Style x:Key="FocusTextBox" TargetType="Grid"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=textBoxName, Path=IsVisible}" Value="True"> <Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textBoxName}"/> </DataTrigger> </Style.Triggers> </Style> 

在我的网格定义中:

 <Grid Style="{StaticResource FocusTextBox}" />