将焦点设置在xaml wpf中的文本框中

尽pipe在这个论坛和其他人的一些post,我找不到一些告诉我如何设置一个TextBox的焦点。

我有一个userControl与许多标签和文本框。 当表单被加载时,我想要一个特定的文本框有焦点。

我已经设置了tabIndex,但似乎没有工作。

有什么build议么?

您可以使用FocusManager.FocusedElement附加属性来实现此目的。 下面是一段默认设置焦点到TxtB的代码。

 <StackPanel Orientation="Vertical" FocusManager.FocusedElement="{Binding ElementName=TxtB}"> <TextBox x:Name="TxtA" Text="A" /> <TextBox x:Name="TxtB" Text="B" /> </StackPanel> 

如果您不想在XAML中执行此操作,也可以在代码隐藏中使用TxtB.Focus()

您可以直接在TextBox上应用此属性:

 <TextBox Text="{Binding MyText}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 

我是新来的使用WPF和通读上面的例子我有一个类似的经验,尝试使用给定的xaml代码示例将焦点设置为文本框,即上面的所有示例都不起作用。

我发现我不得不把FocusManager.FocusElement放在页面元素中。 我认为这可能会工作,如果你使用一个窗口作为父元素。 无论如何,这是为我工作的代码。

  <Page x:Class="NameOfYourClass" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" Title="Title" Height="720" Width="915" Background="white" Loaded="pgLoaded" FocusManager.FocusedElement="{Binding ElementName=NameOfYourTextBox}"> <!-- Create child elements here. --> </Page> 

绑定你想要指出焦点的元素

 FocusManager.FocusedElement= "{Binding ElementName= Comobox1}" 

在网格或组框等

FocusManager不是智慧型的,这使我困惑了一下。 我只是键入整个属性,它的工作。

FocusManager.FocusedElement =“{Binding ElementName = MyTextBox}”


Microsoft Visual Studio Enterprise 2015版本14.0.23107.0/C#/WPF

为了完整性,还有一种方法可以从后面的代码中处理这个问题(例如,无论出于何种原因,都是dynamic创build的并且不存在于XAML中的控件)。 将一个处理程序附加到窗口的Loaded事件,然后使用所需控件的“.Focus()”方法。 下面是裸骨的例子。

 public class MyWindow { private VisualCollection controls; private TextBox textBox; // constructor public MyWindow() { controls = new VisualCollection(this); textBox = new TextBox(); controls.Add(textBox); Loaded += window_Loaded; } private void window_Loaded(object sender, RoutedEventArgs e) { textBox.Focus(); } }