所选选项卡随外部TabControl中模板化的WPF TabControl而更改

所选选项卡随外部TabControl中模板化的WPF TabControl而更改,wpf,templates,tabcontrol,Wpf,Templates,Tabcontrol,我有一个带有外部TabControl的WPF UI,其TabItems包含如下内部TabControl: <TabControl> <TabItem Header="Tab1"> <TabControl> <TabItem Header="TabA"> </TabItem> <TabItem Header="TabB">

我有一个带有外部TabControl的WPF UI,其TabItems包含如下内部TabControl:

<TabControl>
    <TabItem Header="Tab1">
        <TabControl>
            <TabItem Header="TabA">
            </TabItem>
            <TabItem Header="TabB">
            </TabItem>
        </TabControl>
    </TabItem>
    <TabItem Header="Tab2">
        <TabControl>
            <TabItem Header="TabC">
            </TabItem>
            <TabItem Header="TabD">
            </TabItem>
        </TabControl>
    </TabItem>
</TabControl>

在外部TabControl上从Tab1切换到Tab2时,内部TabControl会记住它们的选择。示例:选择Tab1,选择TabB,选择Tab2,选择Tab1,您会发现TabB仍然处于选中状态

当我更改TabControl模板时,这种一致性就会崩溃。事实上,当您在外部TabControl上从Tab1移动到Tab2时,内部TabControl上选定的选项卡似乎会随机更改。以下是一些示例模板:

<Window.Resources>
    <ControlTemplate x:Key="TabControlTemplate1" TargetType="{x:Type TabControl}">
        <DockPanel>
            <StackPanel Orientation="Vertical" DockPanel.Dock="Left" IsItemsHost="True"/>
            <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"/>
        </DockPanel>
    </ControlTemplate>
    <ControlTemplate x:Key="TabControlTemplate2" TargetType="{x:Type TabControl}">
        <DockPanel>
            <UniformGrid Rows="1" DockPanel.Dock="Top" IsItemsHost="True"/>
            <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent"/>
        </DockPanel>
    </ControlTemplate>
</Window.Resources>
<TabControl Template="{DynamicResource TabControlTemplate1}">
    <TabItem Header="Tab1">
        <TabControl Template="{DynamicResource TabControlTemplate2}">
            <TabItem Header="TabA">
            </TabItem>
            <TabItem Header="TabB">
            </TabItem>
        </TabControl>
    </TabItem>
    <TabItem Header="Tab2">
        <TabControl Template="{DynamicResource TabControlTemplate2}">
            <TabItem Header="TabC">
            </TabItem>
            <TabItem Header="TabD">
            </TabItem>
        </TabControl>
    </TabItem>
</TabControl>


如何对外部和内部选项卡控件进行模板化,并在内部选项卡控件上保持选定的选项卡状态?

您是否尝试过通过ViewModel控制选项卡选择?如果您使用的是ViewModel模式,那么将SelectedItem属性绑定到参考底图属性并在选择更改时进行更新并不十分困难

我以前在ListView中使用过此选项,在运行时更改了ItemTemplates以保护所选项目。我不明白为什么它在这种情况下也不起作用。

恐怕这些选项卡控件中的“内部”不容易符合MVVM。这样做比我们完成这个项目所需的时间要长。