Freigeben über


StaticResource-Markuperweiterung

Stellt einen Wert für ein beliebiges XAML-Eigenschaftsattribut bereit, indem ein Verweis auf eine bereits definierte Ressource gesucht wird. Das Nachschlageverhalten für diese Ressource entspricht der Ladezeitsuche, die 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}" ... />

XAML-Objektelementverwendung

<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.

Bemerkungen

Von Bedeutung

StaticResource darf nicht versucht werden, auf eine Ressource einen Vorwärtsverweis vorzunehmen, die weiter hinten in der XAML-Datei lexikalisch definiert wurde. Der Versuch, dies zu tun, wird nicht unterstützt, und selbst wenn ein solcher Verweis nicht fehlschlägt, führt der Versuch des Vorwärtsverweises zu einer Leistungseinbuße bei der Ladezeit, wenn die internen Hashtabellen, die eine ResourceDictionary Darstellung darstellen, durchsucht werden. Um optimale Ergebnisse zu erzielen, passen Sie die Zusammensetzung Ihrer Ressourcenwörterbücher so an, dass Vorwärtsverweise vermieden werden können. Wenn Sie einen Vorwärtsverweis nicht vermeiden können, verwenden Sie stattdessen die DynamicResource-Markuperweiterung .

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

Ein Ressourcenschlüssel kann eine beliebige Zeichenfolge sein, die in der XamlName-Grammatik definiert ist. Ein Ressourcenschlüssel kann auch andere Objekttypen sein, z. B. ein Type. Ein Type Schlüssel ist grundlegend dafür, wie Steuerelemente durch Designs mithilfe eines impliziten Stilschlüssels gestaltet werden können. Weitere Informationen finden Sie unter Übersicht über das Erstellen von Steuerelementen.

Die alternative deklarative Methode zum Verweisen auf eine Ressource ist eine DynamicResource-Markuperweiterung.

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

Das StaticResource kann in der 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 Behandlung dieser Markup-Erweiterung durch die StaticResourceExtension-Klasse definiert.

StaticResource 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