StaticResource マークアップ拡張機能
既に定義されているリソースへの参照を検索して、任意の XAML プロパティ属性の値を提供します。 そのリソースの参照動作は、読み込み時の参照に似ています。これは、現在の XAML ページのマークアップと他のアプリケーション ソースから以前に読み込まれたリソースを検索し、そのリソース値を実行時オブジェクトのプロパティ値として生成します。
XAML 属性の使用法
<object property="{StaticResource key}" ... />
XAML オブジェクト要素の使用法
<object>
<object.property>
<StaticResource ResourceKey="key" ... />
</object.property>
</object>
XAML 値
価値 | 説明 |
---|---|
key |
要求されたリソースのキー。 このキーは、リソースがマークアップで作成された場合は x:Key ディレクティブ によって最初に割り当てられたか、リソースがコードで作成された場合に ResourceDictionary.Add を呼び出すときに key パラメーターとして指定されました。 |
備考
大事な
StaticResource
は、XAML ファイル内で構文的に定義されたリソースへの前方参照を試みてはなりません。 試行はサポートされていません。このような参照が失敗しない場合でも、前方参照を試みると、ResourceDictionary を表す内部ハッシュ テーブルが検索されるときに、読み込み時間のパフォーマンス低下が発生します。 最適な結果を得るには、前方参照を回避できるようにリソース ディクショナリの構成を調整します。 前方参照を回避できない場合は、代わりに DynamicResource マークアップ拡張機能 を使用してください。
指定した ResourceKey は既存のリソースに対応する必要があります。これは、ページ、アプリケーション、使用可能なコントロール テーマと外部リソース、またはシステム リソースのレベルで x:Key ディレクティブ で識別されます。 リソース参照は、その順序で行われます。 静的リソースと動的リソースのリソース参照動作の詳細については、「XAML リソース」を参照してください。
リソース キーには、XamlName Grammarで定義されている任意の文字列を指定できます。 リソース キーには、Typeなど、他のオブジェクトの種類を指定することもできます。 Type キーは、暗黙的なスタイル キーを使用して、テーマによってコントロールのスタイルを設定する方法の基本です。 詳細については、「コントロールの作成の概要」を参照してください。
リソースを参照する別の宣言型手段は、DynamicResource Markup Extensionです。
属性構文は、このマークアップ拡張で使用される最も一般的な構文です。 StaticResource
識別子文字列の後に指定された文字列トークンは、基になる StaticResourceExtension 拡張クラスの ResourceKey 値として割り当てられます。
StaticResource
は、オブジェクト要素の構文で使用できます。 この場合、ResourceKey プロパティの値を指定する必要があります。
StaticResource
は、ResourceKey プロパティを property=value ペアとして指定する冗長な属性指定でも使用できます。
<object property="{StaticResource ResourceKey=key}" ... />
詳細な使用方法は、多くの場合、複数の設定可能なプロパティを持つ拡張機能や、一部のプロパティが省略可能な場合に役立ちます。 StaticResource
には設定可能なプロパティが 1 つしかないため、このような冗長な使用方法は一般的ではありません。
WPF XAML プロセッサの実装では、このマークアップ拡張機能の処理は、StaticResourceExtension クラスによって定義されます。
StaticResource
はマークアップ拡張機能です。 マークアップ拡張は通常、リテラル値またはハンドラー名以外の属性値をエスケープする必要があり、特定の型またはプロパティに型コンバーターを配置するよりもグローバルな要件である場合に実装されます。 XAML のすべてのマークアップ拡張では、{および } 文字が属性構文で使用されます。これは、マークアップ拡張が属性を処理する必要があることを XAML プロセッサが認識する規則です。 詳細については、「マークアップ拡張機能 WPF XAML」を参照してください。
関連項目
- スタイリングとテンプレート
- WPF 内での XAML
- マークアップ拡張機能と WPF XAML
- XAML リソース
- リソースとコード
.NET Desktop feedback