StaticResource-Markuperweiterung

Aktualisiert: November 2007

Stellt einen Wert für ein beliebiges XAML-Eigenschaftenattribut bereit, indem nach einem Verweis auf eine bereits definierte Ressource gesucht wird. Das Suchverhalten für diese Ressource ist analog zur Suche während der Ladezeit, bei der nach Ressourcen gesucht wird, die vorher aus dem Markup der aktuellen XAML-Seite und aus anderen Anwendungsquellen geladen wurden. Der Ressourcenwert wird als Eigenschaftenwert in den Laufzeitobjekten generiert.

Verwendung von XAML-Attributen

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

Verwendung von XAML-Objektelementen

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

XAML-Werte

key

Der Schlüssel für die angeforderte Ressource. Dieser Schlüssel wurde ursprünglich vom x:Key-Attribut zugewiesen, falls im Markup eine Ressource erstellt wurde, oder er wurde als key-Parameter beim Aufrufen von ResourceDictionary.Add bereitgestellt, wenn die Ressource im Code erstellt wurde.

Hinweise

Wichtiger Hinweis:

Eine StaticResource darf nicht versuchen, einen Vorwärtsverweis auf eine Ressource einzurichten, die lexikalisch weiter innerhalb der XAML-Datei definiert ist. Derartige Versuche werden nicht unterstützt, und auch wenn ein Verweis dieser Art nicht fehlschlägt, führen versuchte Vorwärtsverweise zur Ladezeit zu Leistungseinbußen, wenn die internen Hashtabellen durchsucht werden, die ein ResourceDictionary darstellen. Um die besten Ergebnisse zu erzielen, passen Sie die Zusammensetzung der Ressourcenwörterbücher so an, dass Vorwärtsverweise verhindert werden können. Wenn Sie einen Vorwärtsverweis nicht vermeiden können, verwenden Sie stattdessen DynamicResource-Markuperweiterung.

Der angegebene ResourceKey sollte einer vorhandenen Ressource entsprechen, die auf einer Ebene der Seite, der Anwendung, der verfügbaren Steuerelementdesigns und externen Ressourcen oder der Systemressourcen durch ein x:Key-Attribut identifiziert wird. Die Ressourcensuche wird in dieser Reihenfolge durchgeführt. Weitere Informationen zum Verhalten bei der Ressourcensuche für statische und dynamische Ressourcen finden Sie unter Übersicht über Ressourcen.

Bei einem Ressourcenschlüssel kann es sich um eine beliebige Zeichenfolge handeln, die unter XamlName-Grammatik definiert ist. Bei einem Ressourcenschlüssel kann es sich auch um andere Objekttypen handeln, zum Beispiel einen Type. Ein Type-Schlüssel ist von wesentlicher Bedeutung dafür, wie Steuerelemente mithilfe von Designs und eines impliziten Designschlüssels formatiert werden können. Weitere Informationen finden Sie unter Übersicht über das Erstellen von Steuerelementen.

Die alternative Deklarationsmöglichkeit zum Verweisen auf eine Ressource ist eine 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 der Objektelementsyntax verwendet werden. In diesem Fall muss der Wert für die ResourceKey-Eigenschaft angegeben werden.

StaticResource kann zudem in einer ausführlichen Attributverwendung genutzt 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 XAML.

Siehe auch

Konzepte

Erstellen von Formaten und Vorlagen

Übersicht über XAML

Markuperweiterungen und XAML

Übersicht über Ressourcen

Ressourcen und Code