2009-07-08 17 views
3

HeaderedContentControlを継承し、Title、Subtitle、Iconという基本的な依存プロパティがいくつかあります。これらのプロパティをデータバインドするデフォルトのヘッダーテンプレートを提供できるようにしたいと思います。この例では、このクラスにHeaderedViewという名前を付けました。WPF:HeaderedContentControlから継承する

HeaderedViewで定義されているプロパティにバインドできる既定のヘッダーテンプレートを提供できません。次のようなマークアップを試しています。

<Style TargetType="{x:Type local:HeaderedView}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type HeaderedContentControl}"> 
       <StackPanel> 
        <Grid> 
         <ContentPresenter ContentSource="Header"/> 
        </Grid> 
        <Grid> 
         <ContentPresenter ContentSource="Content"/> 
        </Grid> 
       </StackPanel> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="HeaderTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Grid> 
        <TextBlock Text="{TemplateBinding local:HeaderedView.Title}" /> 
       </Grid>      
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

残念ながら、タイトルは表示されていません。

ヘッダーテンプレートは、置き換え可能でなければなりません(このため、私はHeaderedContentControlを利用します)。

このコントロールから継承したいと思うたびに、私は実装に苦労しているようです。どんな助けでも大歓迎です!

答えて

4

テンプレートでは、ContentPresenterを使用してヘッダーを表示していますが、ContentPresenterにHeaderTemplateを使用するよう指示していません。

<ContentPresenter ContentSource="Header" ContentTemplate="{TemplateBinding HeaderTemplate}" /> 

また、あなただけのHeaderTemplateの変更を計画している場合は、最初の場所でテンプレートをオーバーライドする必要はありません:あなたは、あなたのカスタムHeaderTemplateが適用見るためにこれを行うことができるはず。デフォルトのHeaderedContentControlは、HeaderTemplateを適切に適用します。