0
我有一個WPF UI具有外的TabControl其的TabItems包含內的TabControls這樣內部與模板WPF的TabControls所選擇的標籤的變化:外的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>
當從TAB1切換到TAB2在外部的TabControl,內部TabControls記住他們的選擇。例子:選擇Tab1,選擇TabB,選擇Tab2,選擇Tab1,你會發現TabB仍然被選中。
當我更改TabControl模板時,這種一致性分崩離析。實際上,當您從Tab1移動到外部TabControl上的Tab2時,內部TabControls上的選定選項卡會隨機更改。以下是一些示例模板:
<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>
如何模板外部和內部選項卡控件並在內部選項卡控件上維護選定選項卡狀態?
恐怕進入這些選項卡控件的「內部」不容易符合MVVM。這樣做會比我們完成這個項目花費更多的時間。 – Charles