Freigeben über


StaticResource Markup-Erweiterung

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.

XAML-Attributverwendung

<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 zunächst von der x:Key-Direktive zugewiesen, wenn eine Ressource im Markup erstellt wurde, oder er wurde als Parameter key beim Aufrufen von ResourceDictionary.Add bereitgestellt, wenn die Ressource im Code erstellt wurde.

Bemerkungen

Wichtig

Ein StaticResource darf nicht versuchen, einen Vorwärtsverweis auf eine Ressource vorzunehmen, die lexikalisch weiter innerhalb der XAML-Datei definiert ist. 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 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 DynamicResource-Markuperweiterung.

Die angegebene ResourceKey sollte einer vorhandenen Ressource entsprechen, die mit einer x:Key Directive auf irgendeiner Ebene auf Ihrer Seite, Anwendung, den verfügbaren Steuerelement-Themen, 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 im XamlName Grammardefiniert ist. Ein Ressourcenschlüssel kann auch andere Objekttypen sein, z. B. ein Type. Eine Type-Taste ist grundlegend dafür, auf welche Weise Steuerelemente mithilfe eines impliziten Stilschlüssels durch Themen gestaltet werden können. Weitere Informationen finden Sie unter Übersicht über die Steuerelementerstellung.

Die alternative deklarative Methode zum Verweisen auf eine Ressource besteht in der Form einer DynamicResource Markup Extension.

Attributsyntax ist die am häufigsten verwendete Syntax für diese Markuperweiterung. Das nach der Bezeichnerzeichenfolge StaticResource bereitgestellte Zeichenfolgentoken wird als ResourceKey-Wert der zugrunde liegenden StaticResourceExtension-Erweiterungsklasse zugewiesen.

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

StaticResource kann auch in einer ausführlichen Attributverwendung eingesetzt werden, die die Eigenschaft ResourceKey als Eigenschaft=Wert-Paar angibt.

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

Die ausführliche Verwendung ist häufig nützlich für Erweiterungen mit mehr als einer einstellbaren Eigenschaft oder wenn gewisse Eigenschaften optional sind. Da StaticResource nur eine festlegbare Eigenschaft hat, die festgelegt werden muss, ist dieser ausführliche Gebrauch nicht typisch.

In der WPF-XAML-Prozessorimplementierung wird die Verarbeitung für diese Markuperweiterung durch die StaticResourceExtension-Klasse definiert.

StaticResource ist eine Markup-Erweiterung. Markuperweiterungen werden typischerweise implementiert, wenn es erforderlich ist, Attributwerte so zu escapen, dass sie keine Literalwerte oder Handlernamen sind, und die Anforderung globaler ist als nur das Platzieren von Typkonvertern auf bestimmten Typen oder Eigenschaften. 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