ThemeDictionary マークアップ拡張機能
サード パーティのコントロールを統合するカスタム コントロール作成者またはアプリケーションが、コントロールのスタイル設定に使用するテーマ固有のリソース ディクショナリを読み込む方法を提供します。
XAML 属性の使用法
<object property="{ThemeDictionary assemblyUri}" ... />
XAML オブジェクト要素の使用法
<object>
<object.property>
<ThemeDictionary AssemblyName="assemblyUri"/>
<object.property>
<object>
XAML 値
価値 | 説明 |
---|---|
assemblyUri |
テーマ情報を含むアセンブリの URI (Uniform Resource Identifier)。 通常、これは大規模なパッケージ内のアセンブリを参照するパック URI です。 アセンブリ リソースとパック URI により、デプロイの問題が簡略化されます。 詳細については、「WPFの |
解説
この拡張機能は、1 つの特定のプロパティ値 (ResourceDictionary.Sourceの値) のみを入力することを目的としています。
この拡張機能を使用すると、Windows Aero テーマがユーザーのシステムに適用されている場合にのみ使用するスタイル、Luna テーマがアクティブな場合にのみ使用するスタイルを含む 1 つのリソース専用アセンブリを指定できます。 この拡張機能を使用すると、コントロール固有のリソース ディクショナリの内容を自動的に無効にし、必要に応じて別のテーマに固有に再読み込みできます。
assemblyUri
文字列 (AssemblyName プロパティ値) は、特定のテーマに適用される辞書を識別する名前付け規則の基礎を形成します。 ThemeDictionary
の ProvideValue ロジックは、プリコンパイル済みリソース アセンブリ内に含まれる特定のテーマ ディクショナリバリアントを指す URI (Uniform Resource Identifier) を生成することで、規則を完了します。 この規則、または一般的なコントロールのスタイル設定およびページやアプリケーション レベルのスタイル設定とのテーマの相互作用の概念については、ここでは説明しません。 ThemeDictionary
を使用する基本的なシナリオは、アプリケーション レベルで宣言された ResourceDictionary
の Source プロパティを指定することです。 直接 URI としてではなく、ThemeDictionary
拡張機能を使用してアセンブリの URI を指定すると、拡張機能ロジックによって、システム テーマが変更されるたびに適用される無効化ロジックが提供されます。
属性構文は、このマークアップ拡張で使用される最も一般的な構文です。 ThemeDictionary
識別子文字列の後に指定された文字列トークンは、基になる ThemeDictionaryExtension 拡張クラスの AssemblyName 値として割り当てられます。
ThemeDictionary
は、オブジェクト要素の構文でも使用できます。 この場合、AssemblyName プロパティの値を指定する必要があります。
ThemeDictionary
は、Member プロパティを「プロパティ=値」のペアとして指定する冗長な属性使用法でも利用可能です。
<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />
詳細な使用方法は、多くの場合、複数の設定可能なプロパティを持つ拡張機能や、一部のプロパティが省略可能な場合に役立ちます。 ThemeDictionary
には必須設定であるプロパティが1つしかないため、冗長なこの使用方法は一般的ではありません。
WPF XAML プロセッサの実装では、このマークアップ拡張機能の処理は、ThemeDictionaryExtension クラスによって定義されます。
ThemeDictionary
はマークアップ拡張機能です。 マークアップ拡張は通常、リテラル値またはハンドラー名以外の属性値をエスケープする必要があり、特定の型またはプロパティに型コンバーターを配置するよりもグローバルな要件である場合に実装されます。 XAML のすべてのマークアップ拡張では、{および } 文字が属性構文で使用されます。これは、マークアップ拡張が属性を処理する必要があることを XAML プロセッサが認識する規則です。 詳細については、「マークアップ拡張機能 WPF XAML」を参照してください。
関連項目
.NET Desktop feedback