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

いずれかの値を提供XAMLXAML定義されているリソースへの参照にするには、その値を遅らせることで、プロパティの属性。Provides a value for any XAMLXAML property attribute by deferring that value to be a reference to a defined resource. そのリソースの検索の動作は、実行時参照に似ています。Lookup behavior for that resource is analogous to run-time lookup.

XAML 属性の使用方法XAML Attribute Usage

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

XAML プロパティ要素の使用XAML Property Element Usage

    <DynamicResource ResourceKey="key" .../>  


key 要求されたリソースのキー。The key for the requested resource. このキーはによって最初に割り当てられた、 X:key ディレクティブリソースのマークアップでは、作成されたまたはが指定されているかどうか、keyパラメーターを呼び出すときにResourceDictionary.Addリソースは、コードで作成した場合。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.


ADynamicResource最初のコンパイル中に一時的な式を作成し、要求されたリソースの値が実際にオブジェクトを構築するために必要になるまで遅延リソースの参照。A DynamicResource will create a temporary expression during the initial compilation and thus defer lookup for resources until the requested resource value is actually required in order to construct an object. 後にこの可能性があります、XAMLXAMLページが読み込まれます。This may potentially be after the XAMLXAML page is loaded. リソースの値に対して現在のページ範囲から始まるすべてのアクティブなリソース ディクショナリのキーの検索に基づく検出し、コンパイルのプレース ホルダーの式の代わりに使用します。The resource value will be found based on key search against all active resource dictionaries starting from the current page scope, and is substituted for the placeholder expression from compilation.


依存関係プロパティの優先順位の観点から、DynamicResource式は、動的リソース参照が適用される位置に相当します。In terms of dependency property precedence, a DynamicResource expression is equivalent to the position where the dynamic resource reference is applied. 以前に使用できるプロパティのローカル値を設定するかどうか、 DynamicResource 、ローカルの値として式、DynamicResourceが完全に削除します。If you set a local value for a property that previously had a DynamicResource expression as the local value, the DynamicResource is completely removed. 詳細については、「依存関係プロパティ値の優先順位」を参照してください。For details, see Dependency Property Value Precedence.

特定のリソースへのアクセスのシナリオは、特に適してDynamicResourceではなく、 StaticResource マークアップ拡張機能します。Certain resource access scenarios are particularly appropriate for DynamicResource as opposed to a StaticResource Markup Extension. 参照してくださいXAML リソース相対的なメリットとパフォーマンスの問題についてディスカッションをDynamicResourceStaticResourceします。See XAML Resources for a discussion about the relative merits and performance implications of DynamicResource and StaticResource.

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

リソース キーの任意の文字列で定義されている可能性があります、 XamlName の文法します。A resource key may be any string defined in the XamlName Grammar. リソース キーがあります、その他のオブジェクトの種類など、Typeします。A resource key may also be other object types, such as a Type. ATypeキーがテーマでのコントロールのスタイル方法の基礎です。A Type key is fundamental to how controls can be styled by themes. 詳しくは、「コントロールの作成の概要」を参照してください。For more information, see Control Authoring Overview.

APIAPIs リソースの値の検索などFindResourceで使用したのと同じリソース ルックアップ ロジックに従うDynamicResourcefor lookup of resource values, such as FindResource, follow the same resource lookup logic as used by DynamicResource.

リソースを参照するための代替の宣言型の手段は、 StaticResource マークアップ拡張機能します。The alternative declarative means of referencing a resource is as a StaticResource Markup Extension.

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

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

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

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

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

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

DynamicResource はマークアップ拡張機能です。DynamicResource 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