2

2 つの異なる潜在的なアイテム テンプレートを持つタブ コントロールがあります。

<TabControl ItemTemplateSelector="{StaticResource tabTemplateSelector}"/>

今、私はそれのためのスタイルも持っています:

<Style TargetType="{x:Type TabItem}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TabItem}">
                ...

の値によって、タブ項目のスタイルテンプレートを変えたいのですItemTemplateSelector。これどうやってするの?基本的に、スタイル ルール全体をすべてのタブ項目に適用するのではなく、特定のタブ項目テンプレートを持つものだけに適用したいと考えています。

更新:わかりやすくするために、スタイルは にTargetType設定されていTabItemます。特定のアイテム テンプレートを持つタブ アイテムにのみそのスタイルを適用したいと考えています。

4

1 に答える 1

1

ContentPresenterは、 のControlTemplate内容を表示しItemTemplateます。Templateそのため、 内からを切り替えることはできませんControlTemplate

DataTrigger代わりに、を使用してを設定できますTemplate。は、生成される に他のものがあるかDataTriggerどうかをチェックします。ItemTemplateTemplate

これにはおそらくコンバーターが必要ですが、簡単な例を次に示します。「Tab 2」と等しい場合はItemTemplateSelector、もう一方を返すとします。次に、あなたはこのようになりますDataTemplateNameStyleDataTrigger

<Style TargetType="TabItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="TabItem">
                <!-- Your first Template -->
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <DataTrigger Binding="{Binding Name}" Value="Tab 2">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabItem">
                        <!-- Your other Template -->
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </DataTrigger>
    </Style.Triggers>
</Style>
于 2012-06-17T13:27:39.360 に答える