StaticResource のマークアップ拡張機能StaticResource Markup Extension

既に定義されているリソースへの参照を検索することによって、XAMLXAML property 属性の値を提供します。Provides a value for any XAMLXAML property attribute by looking up a reference to an already defined resource. そのリソースの参照動作は、読み込み時の参照に似ています。これにより、現在の XAMLXAML ページのマークアップから以前に読み込まれたリソースとその他のアプリケーションソースが検索され、そのリソース値がプロパティとして生成されます。ランタイムオブジェクトの値です。Lookup behavior for that resource is analogous to load-time lookup, which will look for resources that were previously loaded from the markup of the current XAMLXAML page as well as other application sources, and will generate that resource value as the property value in the run-time objects.

XAML 属性の使用方法XAML Attribute Usage

<object property="{StaticResource key}" .../>  

XAML オブジェクト要素の使用方法XAML Object Element Usage

<object>  
  <object.property>  
<StaticResource ResourceKey="key" .../>  
  </object.property>  
</object>  

XAML 値XAML Values

key 要求されたリソースのキー。The key for the requested resource. このキーは、リソースがマークアップで作成された場合はX:Key ディレクティブによって最初に割り当てられたか、またはリソースがコードで作成された場合に ResourceDictionary.Add を呼び出すときに key パラメーターとして指定されました。This key was initially assigned by the x:Key Directive if a resource was created in markup, or was provided as the key parameter when calling ResourceDictionary.Add if the resource was created in code.

RemarksRemarks

重要

StaticResource は、XAMLXAML ファイル内でさらに構文的に定義されているリソースへの前方参照を試行することはできません。A StaticResource must not attempt to make a forward reference to a resource that is defined lexically further within the XAMLXAML file. これを行おうとすると、サポートされていません。このような参照が失敗しない場合でも、前方参照を試行すると、ResourceDictionary を表す内部ハッシュテーブルが検索されるときに、読み込み時間のパフォーマンスが低下します。Attempting to do so is not supported, and even if such a reference does not fail, attempting the forward reference will incur a load time performance penalty when the internal hash tables representing a ResourceDictionary are searched. 最良の結果を得るには、前方参照を回避できるように、リソースディクショナリの構成を調整します。For best results, adjust the composition of your resource dictionaries such that forward references can be avoided. 前方参照を回避できない場合は、代わりにDynamicresource マークアップ拡張機能を使用してください。If you cannot avoid a forward reference, use DynamicResource Markup Extension instead.

指定された ResourceKey は、既存のリソースに対応する必要があります。これは、ページ、アプリケーション、使用可能なコントロールテーマと外部リソース、またはシステムリソースの、 X:Key ディレクティブで識別されます。The specified ResourceKey should correspond to an existing resource, identified with an x:Key Directive at some level in your page, application, the available control themes and external resources, or system resources. リソースルックアップは、この順序で実行されます。The resource lookup occurs in that order. 静的リソースと動的リソースのリソース検索動作の詳細については、「 XAML リソース」を参照してください。For more information about resource lookup behavior for static and dynamic resources, see XAML Resources.

リソースキーは、 XamlName 文法で定義されている任意の文字列にすることができます。A resource key can be any string defined in the XamlName Grammar. リソースキーは、Typeなど、他の種類のオブジェクトにすることもできます。A resource key can also be other object types, such as a Type. Type キーは、暗黙的なスタイルキーを使用して、テーマによってコントロールをスタイル設定する方法の基本となります。A Type key is fundamental to how controls can be styled by themes, through an implicit style key. 詳細については、「コントロールの作成の概要」を参照してください。For more information, see Control Authoring Overview.

リソースを参照する別の宣言的な方法は、 Dynamicresource マークアップ拡張機能です。The alternative declarative means of referencing a resource is as a DynamicResource Markup Extension.

属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。Attribute syntax is the most common syntax used with this markup extension. StaticResource 識別子文字列の後に設定される文字列トークンは、基になる ResourceKey 拡張クラスの StaticResourceExtension 値として割り当てられます。The string token provided after the StaticResource identifier string is assigned as the ResourceKey value of the underlying StaticResourceExtension extension class.

StaticResource は、オブジェクト要素構文で使用できます。StaticResource can be used in object element syntax. この場合は、ResourceKey プロパティの値を指定する必要があります。In this case, specifying the value of the ResourceKey property is required.

StaticResource は、ResourceKey プロパティをプロパティおよび値のペアとして指定する詳細出力属性使用でも使用できます。StaticResource can also be used in a verbose attribute usage that specifies the ResourceKey property as a property=value pair:

<object property="{StaticResource ResourceKey=key}" .../>  

詳細出力の使用は、複数の設定可能プロパティを持つ拡張機能や、一部のプロパティがオプションである場合に役立ちます。The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. StaticResource には、必須の設定可能プロパティが 1 つしか存在しないため、このような詳細出力の使用は一般的ではありません。Because StaticResource has only one settable property, which is required, this verbose usage is not typical.

WPFWPF XAMLXAML プロセッサの実装では、このマークアップ拡張機能の処理は StaticResourceExtension クラスによって定義されます。In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the StaticResourceExtension class.

StaticResource はマークアップ拡張機能です。StaticResource is a markup extension. 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバーターを適用するだけにとどまらない場合です。Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. XAMLXAML 内のすべてのマークアップ拡張機能は、属性構文で {および} 文字を使用します。これは、マークアップ拡張機能が属性を処理する必要があることを XAMLXAML プロセッサが認識する規則です。All markup extensions in XAMLXAML use the { and } characters in their attribute syntax, which is the convention by which a XAMLXAML processor recognizes that a markup extension must process the attribute. 詳細については、「マークアップ拡張機能」および「WPF XAML」を参照してください。For more information, see Markup Extensions and WPF XAML.

関連項目See also