CustomXamlResourceLoader クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
カスタム リソース ディクショナリをソースとして読み込むことができます。 読み込み時に必要なリソースを検索するために 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
- 継承
- 属性
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}
の有効な参照を行うには、次の各手順を実行する必要があります。
- CustomXamlResourceLoader からカスタム クラスを派生し、GetResource メソッドをオーバーライドします。 実装で基本メソッドを呼び出さないでください。
- 初期化ロジックでクラスを参照するために CustomXamlResourceLoader.Current を設定します。 これは、
{CustomResource}
拡張の使用が含まれるページ レベルの XAML が読み込まれる前に行う必要があります。 CustomXamlResourceLoader.Current を設定する場所の 1 つは、App.xaml コード ビハインド テンプレートで生成される Application サブクラス コンストラクター内です。 - これで、アプリでページとして読み込む 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 と予想される結果に関する何らかの種類の情報が指定されると、要求されたリソースが返されます。 |