{CustomResource} マークアップ拡張

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

XAML 属性の使用方法

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

XAML 値

項目 説明
キー 要求されたリソースのキー。 キーの初期割り当て方法は、現在使用するために登録されている CustomXamlResourceLoader クラスの実装に固有です。

解説

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

CustomResourceをリソース ディクショナリに解決する方法については、このトピックでは説明しません。これは、CustomXamlResourceLoader の実装方法によって大きく異なる可能性があるためです。

CustomXamlResourceLoader 実装の GetResource メソッドは、マークアップで{CustomResource}使用が発生するたびに、Windows ランタイム XAML パーサーによって呼び出されます。 GetResource に渡されるresourceIdkey引数から取得され、その他の入力パラメーターはコンテキスト (使用が適用されるプロパティなど) から取得されます。

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

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

CustomResource はマークアップ拡張機能です。 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバーターを適用するだけにとどまらない場合です。 XAML のすべてのマークアップ拡張では、それぞれの属性構文で "{" と "}" の文字を使います。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張で属性を処理する必要があることを認識します。