StaticResource-Markuperweiterung

Stellt einen Wert für jedes XAML-Eigenschaftsattribut bereit, indem sie einen Verweis auf eine bereits definierte Ressource sucht. Nachschlageverhalten für diese Ressource ist analog zum Ladenzeit-Nachschlagevorgang, der nach Ressourcen sucht, die zuvor aus dem Markup der aktuellen XAML-Seite sowie anderen Anwendungsquellen geladen wurden, und generiert diesen Ressourcenwert als Eigenschaftswert in den Laufzeitobjekten.

Verwendung von XAML-Attributen

<object property="{StaticResource key}" ... />  

Verwendung von XAML-Objektelementen

<object>  
  <object.property>  
<StaticResource ResourceKey="key" ... />  
  </object.property>  
</object>  

XAML-Werte

Wert Beschreibung
key Der Schlüssel für die angeforderte Ressource. Dieser Schlüssel wurde ursprünglich durch die x:Key-Anweisung zugewiesen, wenn eine Ressource in Markup erstellt wurde, oder wurde als key-Parameter beim Aufruf von ResourceDictionary.Add angegeben, wenn die Ressource in Code erstellt wurde.

Hinweise

Wichtig

Eine StaticResource darf nicht versuchen, einen Vorwärtsverweis auf eine Ressource auszuführen, die innerhalb der XAML-Datei weiter lexikalisch definiert ist. Der Versuch, dies zu tun, wird nicht unterstützt, und auch wenn ein solcher Verweis nicht fehlschlägt, führt der Versuch, die Weiterleitungsreferenz zu versuchen, eine Leistungsstrafe für die Ladezeit, wenn die internen Hashtabellen, die eine ResourceDictionary darstellen, durchsucht werden. Um optimale Ergebnisse zu erzielen, sollten Sie die Ressourcenwörterbücher so erstellen, dass Vorwärtsverweise vermieden werden können. Wenn Sie einen Weiterleitungsverweis nicht vermeiden können, verwenden Sie stattdessen die DynamicResource-Markuperweiterung.

Der angegebene ResourceKey sollte einer vorhandenen Ressource entsprechen, die durch die x:Key-Anweisung auf irgendeiner Ebene in Ihrer Seite, Anwendung, den verfügbaren Kontrollthemen und externen Ressourcen oder Systemressourcen bestimmt wird. Die Ressourcensuche erfolgt in dieser Reihenfolge. Weitere Informationen zum Lookupverhalten von Ressourcen für statische und dynamische Ressourcen finden Sie unter XAML-Ressourcen.

Ein Ressourcenschlüssel kann eine beliebige in der XamlName-Grammatik definierte Zeichenfolge sein. Ein Ressourcenschlüssel kann auch ein anderer Objekttyp sein, z. B. ein Type. Ein Type Schlüssel ist grundlegend, wie Steuerelemente nach Designs formatiert werden können, über einen impliziten Stilschlüssel. Weitere Informationen finden Sie unter Übersicht über das Erstellen von Steuerelementen.

Die alternative deklarative Möglichkeit, auf eine Ressource zu verweisen, besteht in einer DynamicResource-Markuperweiterung.

Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax. Das Zeichenfolgentoken, das auf die StaticResource-Bezeichnerzeichenfolge folgt, wird als ResourceKey-Wert der zugrunde liegenden StaticResourceExtension-Erweiterungsklasse zugeordnet.

StaticResource kann in Objektelementsyntax verwendet werden. In diesem Fall ist die Angabe des Werts der ResourceKey-Eigenschaft erforderlich.

StaticResource kann zudem in einer ausführlichen Attributverwendung verwendet werden, die die ResourceKey-Eigenschaft als Eigenschaft=Wert-Paar angibt:

<object property="{StaticResource ResourceKey=key}" ... />  

Die ausführliche Verwendung ist häufig hilfreich, wenn für eine Erweiterung mehr als eine Eigenschaft festgelegt werden kann oder wenn bestimmte Eigenschaften optional sind. Da für StaticResource nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.

In der WPF-XAML-Prozessorimplementierung wird die Handhabung dieser Markuperweiterung durch die StaticResourceExtension-Klasse definiert.

StaticResource 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 WPF-XAML.

Weitere Informationen