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

use*_*969 90 wpf textbox focus

尽管在这个论坛和其他人的一些帖子,我找不到一些东西,告诉我如何把重点放在一个TextBox.

我有一个带有许多标签和textBoxes的userControl.加载表单时,我希望特定的textBox具有焦点.

我已经设置了tabIndex,但似乎没有用.

有什么建议?

Jul*_*ain 174

您可以使用FocusManager.FocusedElement附加属性来实现此目的.这是一段代码,默认情况下将焦点设置为TxtB.

<StackPanel Orientation="Vertical" FocusManager.FocusedElement="{Binding ElementName=TxtB}">
    <TextBox x:Name="TxtA" Text="A" />
    <TextBox x:Name="TxtB" Text="B" />
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

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

  • @TarkaDaal:"它对我不起作用"的评论可能会更加详细.这可能是另一个控制因素.当焦点战争在WPF开始时,事情往往变得顽皮!请验证您的控件,以及您当前在可视树中的位置(例如,在ComboBox模板中,这将无效,并且还有许多其他情况如此).如果找不到窃取程序,请在加载时使用行为或代码隐藏将焦点设置为控件. (13认同)

Max*_*Max 28

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

<TextBox Text="{Binding MyText}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/>
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用,在容器上设置FocusManager.FocusedElement ="{Binding ElementName = TxtB}"确实有效 (15认同)
  • 对我也不起作用。提出的所有其他方法也不起作用。这个问题必须是基本的,应该很容易解决。这就是为什么许多人不喜欢 wpf。 (2认同)

Jos*_*wer 6

我是新手使用WPF并阅读上面的例子我有类似的经验尝试使用给出的xaml代码示例将焦点设置为文本框,即上面的所有示例都不起作用.

我发现的是我必须将FocusManager.FocusElement放在页面元素中.我假设如果你使用Window作为父元素,这可能也会有效.无论如何,这是适合我的代码.

 <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>
Run Code Online (Sandbox Code Playgroud)