2016-07-21 10 views
0

wpf TabControlにいくつかの魅力的なことを行うスタイルがあります。その中で、ユーザーはタブの名前を変更できるHeaderTemplateを設定します。私はいくつかのパラメータに基づいてテキストを色付けするこのテンプレートに基づいたスタイルを持っています、そして、いくつかの条件に応じて各タブのヘッダーにポリゴンを追加したいと思います。DataTemplateを拡張して追加のコントロールを追加する方法

だから、基本スタイルは、次のようになります。

<Style TargetType="TabItem" x:Key="EditableTabItemStyle" 
     BasedOn="{StaticResource BaseTabItemStyle}"> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <controls:EditableTabContent Template="{StaticResource EditableTabItemTemplate}" 
              Content="{Binding Path=., Mode=TwoWay}"/> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

など私の派生ルックス:

<Style x:Key="DerivedTabItem" 
    BasedOn="{StaticResource EditableTabItemStyle}" 
    TargetType="TabItem"> 
<Setter Property="Foreground"> 
    <Setter.Value> 
    <MultiBinding Converter="{StaticResource StateToColorConverter}"> 
     <Binding Path="States.State1" /> 
     <Binding Path="States.State2" /> 
    </MultiBinding> 
    </Setter.Value> 
</Setter> 

私が好ましくせずに、派生スタイルにポリゴンを追加するために探しています基本スタイルを変更したので、私の最初の考えはヘッダーテンプレートを追加することでした:

<Setter Property="HeaderTemplate"> 
    <Setter.Value> 
     <!-- Old header template --> 
     <!-- Polygon --> 
    </Setter.Value> 
</Setter> 

しかし、これは編集可能なスタイリングを上書きします。私が望むものが可能なのかどうかは分からないので、もし必要なら答えを取るつもりですが、それができたらどうしたらいいですか?

答えて

0

既存のテンプレートを修正することはできません。

  • 好きなものをコピーして追加できます。
  • 特定の条件(たとえば、DataTriggerまたはそのVisibilityプロパティへのバインディングを使用)でのみ表示される別のコントロールを含むように元のテンプレートを変更します。
    • ContentPresenterのように、このコントロールは非常に柔軟性があり、あらゆる種類のコンテンツをいくつかのプレースホルダプロパティにバインドして表示することができます。テンプレートはとても簡単です。この場合、

は、私がかつてのでいいと思います。

+0

くそー、私は積極的にそれを避けることを望んでいた。誰かが巧妙な仕事をしているかどうかを確認するために数日待つが、答えがあなたのものではない。 –

関連する問題