インライン スタイルおよびテンプレートInline Styles and Templates

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) には、リソース内の要素の外観を定義して複数回使用できるようにするための方法として、Style オブジェクトとテンプレートオブジェクト (FrameworkTemplate サブクラス) が用意されています。provides Style objects and template objects (FrameworkTemplate subclasses) as a way to define the visual appearance of an element in resources, so that they can be used multiple times. このため、型 StyleFrameworkTemplate ほぼ同じである XAMLXAML の属性は、新しいものをインラインで定義するのではなく、常に既存のスタイルとテンプレートへのリソース参照を作成します。For this reason, attributes in XAMLXAML that take the types Style and FrameworkTemplate almost always make resource references to existing styles and templates rather than define new ones inline.

インラインスタイルとテンプレートの制限事項Limitations of Inline Styles and Templates

Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)では、スタイルとテンプレートのプロパティを技術的に次の2つの方法のいずれかで設定できます。In Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML), style and template properties can technically be set in one of two ways. 属性構文を使用すると、リソース内で定義されているスタイルを参照できます。たとえば、<objectStyle="{StaticResourcemyResourceKey}" .../>です。You can use attribute syntax to reference a style that was defined within a resource, for example <objectStyle="{StaticResourcemyResourceKey}" .../>. または、プロパティ要素構文を使用して、次のようにスタイルインラインを定義することもできます。Or you can use property element syntax to define a style inline, for instance:

<オブジェクト>< object >

<オブジェクト.Style>< object .Style>

< Style``.../>< Style .../>

</オブジェクト.Style></ object .Style>

</オブジェクト></ object >

属性の使用法は、より一般的です。The attribute usage is much more common. インラインで定義され、リソースで定義されていないスタイルは、必ず包含要素のみにスコープが設定され、リソースキーがないため簡単に再利用することはできません。A style that is defined inline and not defined in resources is necessarily scoped to the containing element only, and cannot be re-used as easily because it has no resource key. 一般に、リソース定義のスタイルは汎用性が高く、便利であり、コード内のプログラムロジックをマークアップのデザインから分離するという、一般的な Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) プログラミングモデルの原則に準拠しています。In general a resource-defined style is more versatile and useful, and is more in keeping with the general Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) programming model principle of separating program logic in code from design in markup.

通常、スタイルまたはテンプレートをインラインで設定する理由はありません。その場所でそのスタイルまたはテンプレートを使用するだけの場合でも同様です。Usually there is no reason to set a style or template inline, even if you only intend to use that style or template in that location. スタイルまたはテンプレートを取得できる要素のほとんどは、コンテンツプロパティとコンテンツモデルもサポートしています。Most elements that can take a style or template also support a content property and a content model. スタイルまたはテンプレートを使用して作成した論理ツリーだけを使用している場合は、直接マークアップ内の同等の子要素を使用してそのコンテンツプロパティを簡単に設定できます。If you are only using whatever logical tree you create through styling or templating once, it would be even easier to just fill that content property with the equivalent child elements in direct markup. これにより、スタイルとテンプレートのメカニズムが完全にバイパスされます。This would bypass the style and template mechanisms altogether.

オブジェクトを返すマークアップ拡張機能によって有効になるその他の構文は、スタイルやテンプレートにも使用できます。Other syntaxes enabled by markup extensions that return an object are also possible for styles and templates. このような2つの拡張機能には、 TemplateBindingBindingがあります。Two such extensions that have possible scenarios include TemplateBinding and Binding.

関連項目See also