CustomXamlResourceLoader クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
カスタム リソース ディクショナリをソースとして読み込むことができます。 GetResource をオーバーライドして、読み込み時に必要なリソースを検索するために XAML パーサーが使用できるロジックを提供します。
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
- 継承
- 属性
注釈
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 と、予想される結果に関する何らかの種類の情報を指定すると、要求されたリソースが返されます。 |