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

既に定義されXAMLXAMLているリソースへの参照を検索することによって、任意のプロパティ属性の値を提供します。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. このキーは、リソースがマークアップで作成された場合、またはコードでリソースが作成keyされたResourceDictionary.Add場合にを呼び出すときにパラメーターとして指定された場合、最初にx: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

重要

StaticResourceXAMLXAMLファイル内でさらに構文的に定義されているリソースへの前方参照を作成することはできません。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.

プロセッサ実装では、このマークアップStaticResourceExtension拡張機能の処理はクラスによって定義されます。 WPFWPF XAMLXAMLIn 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