CustomXamlResourceLoader Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ermöglicht das Laden von benutzerdefinierten Ressourcenwörterbüchern als Quellen. Überschreiben Sie GetResource , um die Logik bereitzustellen, mit der ein XAML-Parser die erforderlichen Ressourcen zur Ladezeit suchen kann.
/// [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
- Vererbung
- Attribute
Hinweise
CustomXamlResourceLoader unterstützt eine Markuperweiterungsverwendung {CustomResource}
. Diese Markuperweiterung ist für das Windows-Runtime XAML-Framework eindeutig (sie war in vorläuferischen XAML-Technologien wie Windows Presentation Foundation (WPF) und Microsoft Silverlight nicht vorhanden.)
Eine {CustomResource}
-Syntax funktioniert standardmäßig nicht (die Basisimplementierung von GetResource ist unvollständig). Für einen gültigen {CustomResource}
-Verweis müssen Sie die folgenden Schritte ausführen:
- Leiten Sie eine benutzerdefinierte Klasse von CustomXamlResourceLoader ab, und überschreiben Sie die GetResource-Methode. Rufen Sie in der Implementierung nicht die Methode der Basisklasse auf.
- Legen Sie CustomXamlResourceLoader.Current fest, um auf Ihre Klasse in der Initialisierungslogik zu verweisen. Dies muss erfolgen, bevor XAML-Code auf Seitenebene geladen wird, der die
{CustomResource}
-Erweiterungssyntax enthält. Eine Stelle, an der CustomXamlResourceLoader.Current festgelegt werden kann, ist im Application-Unterklassenkonstruktor, der in den App.xaml-CodeBehind-Vorlagen für Sie generiert wird. - Jetzt können Sie
{CustomResource}
-Erweiterungen in dem XAML-Code, den Ihre App als Seiten lädt, oder in XAML-Ressourcenverzeichnissen verwenden.
Die {CustomResource}-Markuperweiterung kann von XAML auf ähnliche Weise wie die {StaticResource}-Markuperweiterung verwendet werden, die integrierte Ressourcensuche von verschiedenen ResourceDictionary-Speicherorten aus ausführt. Der Unterschied besteht darin, dass die App selbst die Ressourcensuchelogik für eine {CustomResource}-Markuperweiterungsverwendung implementiert, indem ein benutzerdefiniertes Ressourcenladeprogramm bereitgestellt wird. Zum Implementieren des benutzerdefinierten Ressourcenladeprogramms muss die Anwendung eine Klasse bereitstellen, die von CustomXamlResourceLoader abgeleitet ist, und die GetResource-Methode überschreiben. Die App muss ihren benutzerdefinierten Ressourcenladeprogramm registrieren, indem sie die statische Eigenschaft CustomXamlResourceLoader.Current auf eine instance ihrer benutzerdefinierten Ressourcenladeprogrammklasse festlegen. Diese Registrierung muss in einem XAML-UI-Thread vor jeder Analyse von XAML erfolgen, die die {CustomResource}-Markuperweiterung verwendet. Wenn die Anwendung mehrere UI-Threads verwendet, muss für jeden eine separate Registrierung durchgeführt werden.
Die Art und Weise, in der customXamlResourceLoader seine Ressourcen speichert, hängt wahrscheinlich nicht mit ResourceDictionary zusammen. In der Regel stellt Ihre CustomXamlResourceLoader-Klasse zusätzlich zu den erforderlichen Außerkraftsetzungen interne oder öffentliche Methoden bereit, die das Speichern, Schlüsseln und anderweitige Arbeiten mit den Ressourcenelementen in einer zugrunde liegenden Auflistung ermöglichen.
Konstruktoren
CustomXamlResourceLoader() |
Initialisiert eine neue instance der CustomXamlResourceLoader-Klasse. |
Eigenschaften
Current |
Gibt den aktiven CustomXamlResourceLoader-instance zurück. |
Methoden
GetResource(String, String, String, String) |
Gibt beim Überschreiben in einer abgeleiteten Klasse die Logik der Ressourcensuche für diesen CustomXamlResourceLoader an. Gibt eine Ressourcen-ID und einige Typinformationen zum erwarteten Ergebnis zurück, gibt die angeforderte Ressource zurück. |