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中的控件彼此不同,则选择“是”。但是,如果控件使用某个基本控件,则只需在基本控件中设置它。