Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Definiert und verweist auf Schlüssel für Ressourcen, die aus externen Assemblys geladen werden. Dadurch kann eine Ressourcensuche einen Zieltyp in einer Assembly anstelle eines expliziten Ressourcenwörterbuchs in einer Assembly oder einer Klasse angeben.
XAML-Attributverwendung (Einstellungsschlüssel, Komprimierung)
<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" ... />
XAML-Attributverwendung (Schlüssel für Einstellungen, ausführlich)
<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" ... />
XAML-Attributverwendung (Anfordern einer Ressource, Komprimieren)
<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" ... />
XAML-Attributverwendung (Ressource anfordernd, ausführlich)
<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" ... />
XAML-Werte
Wert | BESCHREIBUNG |
---|---|
targetTypeName |
Der Name des öffentlichen Common Language Runtime (CLR)-Typs, der in der Ressourcenassembly definiert ist. |
targetID |
Der Schlüssel für die Ressource. Wenn Ressourcen nachgeschlagen werden, wird targetID analog zu der x:Key-Direktive der Ressource sein. |
Bemerkungen
Wie in den obigen Verwendungen gezeigt, wird an zwei Stellen eine {ComponentResourceKey
}-Markuperweiterungsverwendung gefunden:
Die Definition eines Schlüssels innerhalb eines Themenressourcenverzeichnisses, wie von einem Steuerelemententwickler bereitgestellt.
Zugriff auf eine Themenressource aus der Assembly, wenn Sie das Steuerelement neu gestalten, aber Eigenschaftswerte verwenden möchten, die aus Ressourcen stammen, die von den Themen des Steuerelements bereitgestellt werden.
Beim Verweisen auf Komponentenressourcen, die aus Themen stammen, wird allgemein empfohlen, {DynamicResource}
statt {StaticResource}
zu verwenden. Dies wird in den Verwendungen angezeigt.
{DynamicResource}
wird empfohlen, da das Design selbst vom Benutzer geändert werden kann. Wenn Sie möchten, dass die Komponentenressource, die am ehesten mit der Absicht des Steuerelementautors übereinstimmt, ein Thema zu unterstützen, sollten Sie den Komponentenressourcenverweis ebenfalls dynamisch aktivieren.
Der TypeInTargetAssembly Identifiziert einen Typ, der in der Zielassembly vorhanden ist, in der die Ressource tatsächlich definiert ist. Eine ComponentResourceKey
kann definiert und unabhängig davon verwendet werden, genau zu wissen, wo die TypeInTargetAssembly Definiert ist, aber schließlich muss der Typ durch referenzierte Assemblys aufgelöst werden.
Eine häufige Verwendung ComponentResourceKey besteht darin, Schlüssel zu definieren, die dann als Member einer Klasse verfügbar gemacht werden. Für diese Verwendung verwenden Sie den ComponentResourceKey Klassenkonstruktor, nicht die Markuperweiterung. Weitere Informationen finden Sie im Abschnitt ComponentResourceKey oder unter dem Abschnitt "Definieren und Verweisen auf Schlüssel für Designressourcen" des Themas Übersicht zur Erstellung von Steuerelementen.
Für das Einrichten von Schlüsseln und verweisen auf Schlüsselressourcen wird die Attributsyntax häufig für die ComponentResourceKey
Markuperweiterung verwendet.
Die dargestellte kompakte Syntax basiert auf der ComponentResourceKey Konstruktorsignatur und der Positionsparameterverwendung einer Markuperweiterung. Die Reihenfolge, in der die targetTypeName
und targetID
gegeben werden, ist wichtig. Die ausführliche Syntax baut auf dem ComponentResourceKey parameterlosen Konstruktor auf und legt dann TypeInTargetAssembly und ResourceId in einer Weise fest, die einer echten Attributsyntax bei einem Objektelement vergleichbar ist. In der ausführlichen Syntax ist die Reihenfolge, in der die Eigenschaften festgelegt werden, nicht wichtig. Die Beziehung und die Mechanismen dieser beiden Alternativen (kompakt und ausführlich) werden im folgenden Thema Markuperweiterungen und WPF-XAML ausführlicher beschrieben.
Technisch gesehen kann der Wert für targetID
ein beliebiges Objekt sein, er muss keine Zeichenfolge sein. Die häufigste Verwendung in WPF besteht jedoch darin, den targetID
Wert an Formularen auszurichten, die Zeichenfolgen sind und in denen solche Zeichenfolgen in der XamlName-Grammatik gültig sind.
Das ComponentResourceKey
kann in der Objektelementsyntax verwendet werden. In diesem Fall ist die Angabe der Werte der TypeInTargetAssembly und ResourceId Eigenschaften erforderlich, um die Erweiterung ordnungsgemäß zu initialisieren.
In der WPF-XAML-Readerimplementierung wird die Behandlung für diese Markuperweiterung durch die ComponentResourceKey Klasse definiert.
ComponentResourceKey
ist eine Markup-Erweiterung. Markuperweiterungen werden typischerweise implementiert, wenn Attributwerte von den reinen Literalwerten oder Handlernamen abweichen müssen und diese Anforderung globaler ist, als nur Typkonverter für bestimmte Typen oder Eigenschaften zu verwenden. Alle Markuperweiterungen in XAML verwenden die Zeichen {und } in ihrer Attributsyntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass eine Markuperweiterung das Attribut verarbeiten muss. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.
Siehe auch
.NET Desktop feedback