У меня есть пользовательский интерфейс WPF с внешним TabControl, чьи TabItems содержат внутренние TabControls, как это:
<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>
При переключении с Tab1 на Tab2 на внешнем TabControl, внутренние TabControls запоминают свой выбор. Пример: выберите Tab1, выберите TabB, выберите Tab2, выберите Tab1, и вы увидите, что TabB все еще выбран.
Эта согласованность распадается, когда я меняю шаблоны TabControl. Фактически, выбранная вкладка на внутренних элементах TabControls кажется случайным образом изменяющимся при переходе от 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>
Как шаблонизировать элементы управления внешней и внутренней вкладок и поддерживать выбранное состояние вкладки на элементах управления внутренней вкладки?