ComponentResourceKey-Markuperweiterung
Aktualisiert: November 2007
Definiert und verweist auf Schlüssel für Ressourcen, die aus externen Assemblys geladen werden. Dadurch kann in einem Ressourcenlookup ein Zieltyp in einer Assembly angegebenen werden, und es muss nicht explizit ein Ressourcenwörterbuch in einer Assembly angegeben werden.
Verwendung von XAML-Attributen (Festlegen des Schlüssels, kompakt)
<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" .../>
Verwendung von XAML-Attributen (Festlegen des Schlüssels, ausführlich)
<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" .../>
Verwendung von XAML-Attributen (Anfordern der Ressource, kompakt)
<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" .../>
Verwendung von XAML-Attributen (Anfordern der Ressource, ausführlich)
<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" .../>
XAML-Werte
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 gesucht werden, ist targetID analog zum x:Key-Attribut der Ressource. |
Hinweise
Mit TypeInTargetAssembly wird ein Typ bestimmt, der als Typ in der Zielassembly vorhanden ist, in der die Ressource eigentlich definiert wird. Ein ComponentResourceKey kann auch ohne genaue Kenntnisse darüber, wo TypeInTargetAssembly definiert ist, definiert und verwendet werden, muss den Typ jedoch letztlich über Assemblys auflösen, auf die verwiesen wird.
Eine häufige Verwendung für ComponentResourceKey ist die Definition von Schlüsseln, die dann als Member einer Klasse verfügbar gemacht werden. Für diese Verwendung müssen Sie den ComponentResourceKey-Klassenkonstruktor einsetzen, nicht die Markuperweiterung.
Die Attributsyntax wird im Allgemeinen für die ComponentResourceKey-Markuperweiterung verwendet. Die dargestellte kompakte Syntax stützt sich auf die ComponentResourceKey.ComponentResourceKey-Konstruktorsignatur, und die Reihenfolge, in der targetTypeName und targetID angegeben werden, ist wichtig. Die ausführliche Syntax stützt sich auf den ComponentResourceKey.ComponentResourceKey-Standardkonstruktor. Dann werden TypeInTargetAssembly und ResourceId in analoger Weise zur tatsächlichen Attributsyntax für ein Objektelement festgelegt. In der ausführlichen Syntax ist die Reihenfolge, in der die Eigenschaften festgelegt werden, nicht wichtig. Die Beziehung und die Mechanismen dieser Alternativen (kompakt und ausführlich) werden detaillierter im Thema Markuperweiterungen und XAML beschrieben.
ComponentResourceKey kann in der Objektelementsyntax verwendet werden. In diesem Fall ist die Angabe des Werts der Eigenschaften TypeInTargetAssembly und ResourceId erforderlich, um die Erweiterung ordnungsgemäß zu initialisieren.
In der WPF XAML-Readerimplementierung wird die Verarbeitung dieser Markuperweiterung von der ComponentResourceKey-Klasse definiert.
ComponentResourceKey ist eine Markuperweiterung. Markuperweiterungen werden in der Regel implementiert, wenn Attributwerte mit Escapezeichen versehen werden müssen, damit diese nicht als literale Werte oder als Handlernamen betrachtet werden, und diese Anforderung eher global und nicht nur durch den Einsatz von Typkonvertern für bestimmte Typen oder Eigenschaften erfüllt werden soll. Alle Markuperweiterungen in XAML verwenden die Zeichen { und } in der Attributsyntax. Dies ist die Konvention, durch die ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss. Weitere Informationen finden Sie unter Markuperweiterungen und XAML.
Siehe auch
Konzepte
Erstellen von Formaten und Vorlagen