CustomXamlResourceLoader クラス

定義

カスタム リソース ディクショナリをソースとして読み込むことができます。 読み込み時に必要なリソースを検索するために XAML パーサーが使用できるロジックを提供するには、 GetResource をオーバーライドします。

/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class CustomXamlResourceLoader
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class CustomXamlResourceLoader
Public Class CustomXamlResourceLoader
継承
Object IInspectable CustomXamlResourceLoader
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

注釈

CustomXamlResourceLoader では、マークアップ拡張機能の使用 {CustomResource}がサポートされています。 このマークアップ拡張機能は、Windows ランタイム XAML フレームワークに固有です (Windows Presentation Foundation (WPF) や Microsoft Silverlight などの前駆 XAML テクノロジには存在しませんでした)。

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

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

{CustomResource} マークアップ拡張機能は、さまざまな ResourceDictionary の場所から組み込みのリソース検索を実行する {StaticResource} マークアップ拡張機能と同様の方法で XAML から使用できます。 違いは、アプリ自体が、カスタム リソース ローダーを指定して {CustomResource} マークアップ拡張機能 の使用に対するリソース参照ロジックを実装することです。 カスタム リソース ローダーを実装するには、アプリケーションで CustomXamlResourceLoader から派生したクラスを提供し、 GetResource メソッドをオーバーライドする必要があります。 アプリでは、静的プロパティ CustomXamlResourceLoader.Current をカスタム リソース ローダー クラスのインスタンスに設定して、カスタム リソース ローダーを登録する必要があります。 この登録は、 {CustomResource} マークアップ拡張機能を使用する XAML を解析する前に、XAML UI スレッドで行う必要があります。 アプリケーションで複数の UI スレッドを使用する場合は、それぞれに個別の登録を行う必要があります。

CustomXamlResourceLoader がリソースを格納する方法は、 ResourceDictionary とは関係ない可能性があります。 通常、CustomXamlResourceLoader クラスは、必要なオーバーライドに加えて、基になるコレクション内のリソース項目の格納、キー設定、その他の操作を可能にする内部メソッドまたはパブリック メソッドを提供します。

コンストラクター

CustomXamlResourceLoader()

CustomXamlResourceLoader クラスの新しいインスタンスを初期化します。

プロパティ

Current

アクティブな CustomXamlResourceLoader インスタンスを 返します。

メソッド

GetResource(String, String, String, String)

派生クラスでオーバーライドされた場合、この CustomXamlResourceLoader のリソース参照のロジックを指定します。 リソース ID と予想される結果に関する何らかの種類の情報が指定されると、要求されたリソースが返されます。

適用対象

こちらもご覧ください