C# 如何在选项卡控件中选择“索引选项卡更改”时自动移动焦点?
我有这样的C# 如何在选项卡控件中选择“索引选项卡更改”时自动移动焦点?,c#,wpf,C#,Wpf,我有这样的Tabcontrol <TabControl SelectedIndex="{Binding SelectedTab}" Name="TabControlAll"> <TabItem Header="Hal 1" Style="{StaticResource AzureTabItem}"> <kor:Halaman1 DataContext="{Binding RTDetail}"/> <
Tabcontrol
<TabControl SelectedIndex="{Binding SelectedTab}" Name="TabControlAll">
<TabItem Header="Hal 1" Style="{StaticResource AzureTabItem}">
<kor:Halaman1 DataContext="{Binding RTDetail}"/>
</TabItem>
<TabItem Header="Hal 2" Style="{StaticResource AzureTabItem}" >
<kor:Halaman2 />
</TabItem>
<TabItem Header="Hal 3" Style="{StaticResource AzureTabItem}">
<kor:Halaman3/>
</TabItem>
<TabItem Header="Hal 4" Style="{StaticResource AzureTabItem}">
<kor:Halaman4/>
...
</TabControl>
...
视图可以是这样的。
在我的UserControl
中,我有很多像Hal 12这样的控件,里面有很多Textbox
文本框在UserControl
Halaman中,所以我想问的是,我如何能自动改变键盘焦点,将Tabcontrol
索引更改为选中选项卡中的第一个Textbox
当键盘焦点到达该页面的最后一个控件时,我还必须转到下一个选项卡控件
任何正文都可以提供帮助?当按下tab键时,此事件处理程序将焦点移动到下一个TabItem
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Tab)
tabControl.SelectedIndex = (tabControl.SelectedIndex + 1) % tabCount;
}
移动焦点后,可以将此事件处理程序设置为选项卡项中的最后一个控件。这将聚焦选定选项卡项中的第一个控件。可以用第一个控件的名称替换元素
private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
element.Dispatcher.BeginInvoke(new Action<UIElement>(x =>
{
x.Focus();
}), DispatcherPriority.ApplicationIdle, element);
}
private void tab控件\u SelectionChanged(对象发送者,SelectionChangedEventArgs e)
{
element.Dispatcher.BeginInvoke(新操作(x=>
{
x、 焦点();
}),DispatcherPriority.ApplicationIdle,元素);
}
这应该可以正常工作。尝试FocusManager.FocusElement={Binding ElementName=}
。是否必须在每个usercontrol中手动设置?如果tabControl中的控件彼此不同,则选择“是”。但是,如果控件使用某个基本控件,则只需在基本控件中设置它。