次の方法で共有


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の Pack URI」を参照してください。

解説

この拡張機能は、1 つの特定のプロパティ値 (ResourceDictionary.Sourceの値) のみを入力することを目的としています。

この拡張機能を使用すると、Windows Aero テーマがユーザーのシステムに適用されている場合にのみ使用するスタイル、Luna テーマがアクティブな場合にのみ使用するスタイルを含む 1 つのリソース専用アセンブリを指定できます。 この拡張機能を使用すると、コントロール固有のリソース ディクショナリの内容を自動的に無効にし、必要に応じて別のテーマに固有に再読み込みできます。

assemblyUri 文字列 (AssemblyName プロパティ値) は、特定のテーマに適用される辞書を識別する名前付け規則の基礎を形成します。 ThemeDictionaryProvideValue ロジックは、プリコンパイル済みリソース アセンブリ内に含まれる特定のテーマ ディクショナリバリアントを指す URI (Uniform Resource Identifier) を生成することで、規則を完了します。 この規則、または一般的なコントロールのスタイル設定およびページやアプリケーション レベルのスタイル設定とのテーマの相互作用の概念については、ここでは説明しません。 ThemeDictionary を使用する基本的なシナリオは、アプリケーション レベルで宣言された ResourceDictionarySource プロパティを指定することです。 直接 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」を参照してください。

関連項目