{CustomResource} マークアップ拡張

[Windows 10 の UWP アプリ向けに更新。 Windows 8.x の記事については、アーカイブをご覧ください]

カスタム リソース検索の実装から取得されたリソースの参照を評価して、任意の XAML 属性の値を提供します。 リソース検索は、CustomXamlResourceLoader クラスの実装によって実行されます。

XAML 属性の使用方法

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

XAML 値

用語 説明
key 要求されたリソースのキー。 キーが最初にどのように割り当てられるかは、現在使用が登録されている CustomXamlResourceLoader クラスの実装に固有のものです。

注釈

CustomResource は、カスタム リソース リポジトリのどこかで定義されている値を取得するための手法です。 この手法は比較的高度なものであり、Windows ランタイム アプリのほとんどのシナリオでは使われていません。

CustomResource がどのようにリソース辞書に解決されるかについては、CustomXamlResourceLoader の実装方法によって異なるため、このトピックでは説明しません。

CustomXamlResourceLoader 実装の GetResource メソッドは、Windows ランタイム XAML パーサーがマークアップ内で {CustomResource} の使用を検出するたびに呼び出されます。 GetResource に渡される resourceIdkey 引数から与えられ、他の入力パラメーターはコンテキスト (たとえば、使用が適用されたプロパティ) から与えられます。

{CustomResource} の使用は既定では機能しません (GetResource の基本実装が不完全です)。 {CustomResource} の有効な参照を行うには、次の各手順を実行する必要があります。

  1. CustomXamlResourceLoader からカスタム クラスを派生し、GetResource メソッドをオーバーライドします。 実装で基本メソッドを呼び出さないでください。
  2. 初期化ロジックでクラスを参照するために CustomXamlResourceLoader.Current を設定します。 これは、{CustomResource} 拡張の使用が含まれるページ レベルの XAML が読み込まれる前に行う必要があります。 CustomXamlResourceLoader.Current を設定する場所の 1 つは、App.xaml コード ビハインド テンプレートで生成される Application サブクラス コンストラクター内です。
  3. これで、アプリでページとして読み込む XAML 内で、XAML リソース ディクショナリ内から、{CustomResource} 拡張を使うことができます。

CustomResource はマークアップ拡張です。 通常、マークアップ拡張は、属性値をリテラル値やハンドラー名以外にエスケープする必要があり、特定の型やプロパティに対して型コンバーターを指定するのではなく、よりグローバルにその必要がある場合に実装します。 XAML のすべてのマークアップ拡張では、それぞれの属性構文で "{" と "}" の文字を使います。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張で属性を処理する必要があることを認識します。