2011-06-22 7 views
0

Iは、そのTabItemsこのようなインナーTabControls含む外側のタブコントロールとWPF UIを有する内部テンプレートWPFの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> 

外側タブコントロールにTAB2するTab1をから切り替え内側のTabControlsは選択を覚えています。例:Tab1を選択し、TabBを選択し、Tab2を選択し、Tab1を選択すると、TabBがまだ選択されています。

TabControlテンプレートを変更すると、この整合性が崩れます。実際、内側のTabControls上の選択されたタブは、TabControlの外側のTabControlからTab2に移動するとランダムに変化するように見えます。

<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> 

外部タブコントロールと内部タブコントロールをテンプレートし、選択したタブ状態を内部タブコントロールで維持するにはどうすればよいですか。

答えて

0

ViewModelでタブの選択を制御しようとしましたか? ViewModelパターンを使用している場合は、SelectionItem属性を下位のプロパティにバインドして、選択が変更されたときにそのプロパティを更新することは非常に難しくありません。

私はこれを先にListViewで使用しました。ここでは、選択したItemを保護するために実行時にItemTemplatesを変更しました。私はなぜこの事例でもうまくいかないと思っていません。

+0

これらのタブコントロールに入っている「内部」は、MVVMに準拠していないことが恐れられます。そうすることは、私たちがこのプロジェクトを完了するために必要な時間よりも時間がかかるでしょう。 – Charles

関連する問題