インライン スタイルおよびテンプレート
更新 : 2007 年 11 月
Windows Presentation Foundation (WPF) は、Style オブジェクトとテンプレート オブジェクト (FrameworkTemplate サブクラス) を、要素の外観をリソースで定義する方法として提供するので、これらのオブジェクトは複数回数使用できます。このため、型 Style および型 FrameworkTemplate を取る XAML の属性は、ほとんどの場合、新たにインラインで定義するのではなく、既存のスタイルとテンプレートへのリソース参照を作成します。
インライン スタイルおよびテンプレートの制限
Extensible Application Markup Language (XAML) では、スタイル プロパティとテンプレート プロパティを、技術的に次のいずれかの方法で設定できます。属性構文を使用して、リソース内で定義されたスタイルを参照できます。たとえば、<object Style="{StaticResource myResourceKey}" .../> とします。または、プロパティ要素構文を使用して、スタイル インラインを定義できます。次はその例です。
<object>
<object.Style>
<Style .../>
</object.Style>
</object>
属性の使用方法は、さらに一般的です。インラインで定義され、リソースでは定義されないスタイルは、必然的に、含まれる要素のみに有効範囲が限定されます。また、リソース キーを持たないため、簡単には再利用できません。一般に、リソースで定義されるスタイルは、汎用性と有用性が高く、コードでのプログラム ロジックとマークアップでのデザインを分離する一般的な Windows Presentation Foundation (WPF) プログラミング モデルの方針により合っています。
通常、その場所でスタイルまたはテンプレートを使用するだけの場合でも、スタイルやテンプレートをインラインで設定する必要はありません。ほとんどの要素は、スタイルまたはテンプレートを取ることができ、また、コンテンツ プロパティとコンテンツ モデルをサポートします。スタイルまたはテンプレートで作成する論理ツリーを一度使用するだけの場合、マークアップで、同等の子要素によってコンテンツ プロパティを直接設定するだけの方がよりいっそう簡単です。これは、スタイル機構とテンプレート機構を完全にバイパスします。
オブジェクトを返すマークアップ拡張機能によって有効となる他の構文も、スタイルおよびテンプレートには可能です。考えられるシナリオを持つ 2 つの拡張機能として、TemplateBinding と Binding があります。