C#WPF设置焦点选项卡项
本文关键字:选项 焦点 设置 C#WPF | 更新日期: 2023-09-27 18:27:40
我有一个TabControl,我想将焦点设置在Textbox的第一个选项卡上。
我尝试在代码中使用:
this.tabItemMerkmalAllgemein.Focus();
this.textBoxMerkmalBezeichnung.Focus();
如果选择了第二个选项卡,则在此之后将选择第一个选项卡,但文本框处没有显示光标,因此文本框焦点不起作用。
XAML选项卡控件:
<TabControl Width="359" Grid.Column="1" Style="{StaticResource EditDialogTabControl}" Name="tabControlMerkmalDetails" Margin="4,0,0,0">
<TabItem Header="Allgemein" Name="tabItemMerkmalAllgemein" GotFocus="tabItemMerkmalAllgemein_GotFocus">
…
<Label Grid.Row="0" Style="{StaticResource EditDialogLabel}" Content="Bezeichnung"/>
<TextBox x:Name="textBoxMerkmalBezeichnung" Grid.Row="0" Grid.Column="1"
Style="{StaticResource EditDialogTextBox}" MaxWidth="300"
Text="{Binding Path=bezeichnung, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
TextChanged="textBoxMerkmalBezeichnung_TextChanged" LostFocus="textBoxMerkmalBezeichnung_LostFocus" />
…
</TabItem>
<TabItem Name="tabItemKostenpflichtig">
…
</TabItem>
</TabControl>
</Grid>
</TabItem>
您需要将TabItem
的声明更改为:
<TabItem FocusManager.FocusedElement="{Binding ElementName=textBoxMerkmalBezeichnung}"
Header="Allgemein" Name="tabItemMerkmalAllgemein" GotFocus="tabItemMerkmalAllgemein_GotFocus">
重要的部分是添加了FocusManager.FocusedElement
附加属性。您可以从MSDN上的FocusManager.FocusedElement Attached Property页面了解更多信息。