インライン スタイルおよびテンプレート
Windows Presentation Foundation (WPF) には、リソース内の要素を複数回使用できるように、視覚的な外観を定義する方法として、Style オブジェクトとテンプレート オブジェクト (FrameworkTemplate サブクラス) が用意されています。 このため、型 Style と FrameworkTemplate を使用する XAML の属性は、新しいものをインラインで定義するのではなく、既存のスタイルとテンプレートへのリソース参照をほぼ常に作成します。
インライン スタイルとテンプレートの制限事項
Extensible Application Markup Language (XAML) では、次の 2 つの方法のいずれかで、スタイルとテンプレートのプロパティを技術的に設定します。 属性構文を使用すると、<
objectStyle="{StaticResource
myResourceKey}" .../>
など、リソース内で定義されたスタイルを参照できます。 または、プロパティ要素構文を使用して、次のようにインラインでスタイルを定義することもできます。
<
object >
<
object .Style>
<
Style
.../>
</
object .Style>
</
object >
属性を使用する方が、より一般的です。 インラインで定義され、リソースで定義されていないスタイルは、必然的に包含要素のみにスコープが設定されます。また、リソース キーがないため、簡単に再利用することはできません。 一般に、リソース定義のスタイルは、高い汎用性と利便性を備え、コード内のプログラム ロジックをマークアップのデザインから分離するという、一般的な Windows Presentation Foundation (WPF) プログラミング モデルの原則に準拠しています。
通常、スタイルまたはテンプレートをインラインで設定する理由はありません。その場所で、そのスタイルまたはテンプレートを使用するのみの場合も同様です。 スタイルまたはテンプレートを取得できる要素のほとんどは、コンテンツ プロパティとコンテンツ モデルもサポートします。 スタイルまたはテンプレートを使用して作成した論理ツリーのみを使用する場合は、ダイレクト マークアップ内の同等の子要素を使用すると、そのコンテンツ プロパティを塗りつぶしやすくなります。 これにより、スタイルとテンプレートのメカニズムが完全にバイパスされます。
オブジェクトを返すマークアップ拡張によって有効になったその他の構文は、スタイルやテンプレートにも使用できます。 それら 2 つの拡張には、TemplateBinding および Binding というシナリオが考えられます。
関連項目
.NET Desktop feedback