インライン スタイルおよびテンプレート

Windows Presentation Foundation (WPF) には、リソース内の要素を複数回使用できるように、視覚的な外観を定義する方法として、Style オブジェクトとテンプレート オブジェクト (FrameworkTemplate サブクラス) が用意されています。 このため、型 StyleFrameworkTemplate を使用する XAML の属性は、新しいものをインラインで定義するのではなく、既存のスタイルとテンプレートへのリソース参照をほぼ常に作成します。

インライン スタイルとテンプレートの制限事項

Extensible Application Markup Language (XAML) では、次の 2 つの方法のいずれかで、スタイルとテンプレートのプロパティを技術的に設定します。 属性構文を使用すると、<objectStyle="{StaticResourcemyResourceKey}" .../> など、リソース内で定義されたスタイルを参照できます。 または、プロパティ要素構文を使用して、次のようにインラインでスタイルを定義することもできます。

<object>

<object.Style>

< Style .../>

</object.Style>

</object>

属性を使用する方が、より一般的です。 インラインで定義され、リソースで定義されていないスタイルは、必然的に包含要素のみにスコープが設定されます。また、リソース キーがないため、簡単に再利用することはできません。 一般に、リソース定義のスタイルは、高い汎用性と利便性を備え、コード内のプログラム ロジックをマークアップのデザインから分離するという、一般的な Windows Presentation Foundation (WPF) プログラミング モデルの原則に準拠しています。

通常、スタイルまたはテンプレートをインラインで設定する理由はありません。その場所で、そのスタイルまたはテンプレートを使用するのみの場合も同様です。 スタイルまたはテンプレートを取得できる要素のほとんどは、コンテンツ プロパティとコンテンツ モデルもサポートします。 スタイルまたはテンプレートを使用して作成した論理ツリーのみを使用する場合は、ダイレクト マークアップ内の同等の子要素を使用すると、そのコンテンツ プロパティを塗りつぶしやすくなります。 これにより、スタイルとテンプレートのメカニズムが完全にバイパスされます。

オブジェクトを返すマークアップ拡張によって有効になったその他の構文は、スタイルやテンプレートにも使用できます。 それら 2 つの拡張には、TemplateBinding および Binding というシナリオが考えられます。

関連項目