TemplateBinding vs TemplatedParent


TemplateBinding, TemplatedParent


どちらの方法もTemplateを適用する要素の属性とバインディングに存在する.

TemplateBinding


EX) TemplateBinding
<ControlTemplate TargetType="{x:Type Button}">
   <Border BorderBrush="{TemplateBinding Property=Background}">
      <ContentPresenter />
   </Border>
</ControlTemplate>
  • TemplateBindingsはコンパイル時にControlTemplateに割り当てられたタイプを処理します.
    このようにして、Templateのコンパイルは速い.
  • 制御テンプレートでのみ使用可能です.
  • Value Convertingは使用できません.
  • TemplatedParent


    EX) TemplatedParent
    <ControlTemplate TargetType="{x:Type Button}">
       <Border BorderBrush="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}">
          <ContentPresenter />
       </Border>
    </ControlTemplate>
  • は一般的なバインド方式
  • である.
  • 実行時に処理します.だからコンパイルはもっと遅いです.