StaticResource-MarkuperweiterungStaticResource Markup Extension

Stellt einen Wert für ein XAMLXAML beliebiges Eigenschafts Attribut bereit, indem ein Verweis auf eine bereits definierte Ressource gesucht wird.Provides a value for any XAMLXAML property attribute by looking up a reference to an already defined resource. Das Suchverhalten für diese Ressource entspricht der Lade Zeit Suche, bei der nach Ressourcen gesucht wird, die zuvor aus dem Markup der aktuellen XAMLXAML Seite sowie aus anderen Anwendungs Quellen geladen wurden, und generiert den Ressourcen Wert als Eigenschafts Wert in den Lauf Zeit Objekten.Lookup behavior for that resource is analogous to load-time lookup, which will look for resources that were previously loaded from the markup of the current XAMLXAML page as well as other application sources, and will generate that resource value as the property value in the run-time objects.

Verwendung von XAML-AttributenXAML Attribute Usage

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

Verwendung von XAML-ObjektelementenXAML Object Element Usage

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

XAML-WerteXAML Values

key Der Schlüssel für die angeforderte Ressource.The key for the requested resource. Dieser Schlüssel wurde anfänglich durch die x:Key-Direktive zugewiesen, wenn eine Ressource im Markup erstellt wurde, oder key wurde beim Aufrufen ResourceDictionary.Add von als Parameter bereitgestellt, wenn die Ressource im Code erstellt wurde.This key was initially assigned by the x:Key Directive if a resource was created in markup, or was provided as the key parameter when calling ResourceDictionary.Add if the resource was created in code.

HinweiseRemarks

Wichtig

Ein StaticResource darf nicht versuchen, einen vorwärts Verweis auf eine Ressource zu erstellen, die lexikalisch weiter unten XAMLXAML in der Datei definiert ist.A StaticResource must not attempt to make a forward reference to a resource that is defined lexically further within the XAMLXAML file. Der Versuch, dies zu tun, wird nicht unterstützt, und auch wenn ein solcher Verweis nicht fehlschlägt, wird beim Versuch, den vorwärts Verweis zu verwenden, eine Leistungs Einbuße ResourceDictionary bei der Ladezeit verursacht, wenn die internen Hash Tabellen, die eine darstellenAttempting to do so is not supported, and even if such a reference does not fail, attempting the forward reference will incur a load time performance penalty when the internal hash tables representing a ResourceDictionary are searched. Um optimale Ergebnisse zu erzielen, passen Sie die Komposition ihrer Ressourcen Wörterbücher so an, dass vorwärts Verweise vermieden werden können.For best results, adjust the composition of your resource dictionaries such that forward references can be avoided. Wenn Sie keinen vorwärts Verweis vermeiden können, verwenden Sie stattdessen die dynamikresource-Markup Erweiterung .If you cannot avoid a forward reference, use DynamicResource Markup Extension instead.

Der angegebene ResourceKey sollte einer vorhandenen Ressource entsprechen, die mit einer x:Key-Direktive auf einer bestimmten Ebene auf der Seite, Anwendung, den verfügbaren Steuerelementen und externen Ressourcen oder Systemressourcen identifiziert wird.The specified ResourceKey should correspond to an existing resource, identified with an x:Key Directive at some level in your page, application, the available control themes and external resources, or system resources. Die Ressourcen Suche erfolgt in dieser Reihenfolge.The resource lookup occurs in that order. Weitere Informationen zum Verhalten der Ressourcen Suche für statische und dynamische Ressourcen finden Sie unter XAML-Ressourcen.For more information about resource lookup behavior for static and dynamic resources, see XAML Resources.

Ein Ressourcen Schlüssel kann eine beliebige Zeichenfolge sein, die in der XamlName-Grammatikdefiniert ist.A resource key can be any string defined in the XamlName Grammar. Ein Ressourcen Schlüssel kann auch andere Objekttypen sein, z Type. b.A resource key can also be other object types, such as a Type. Ein Type Schlüssel ist von grundlegender Bedeutung für das Formatieren von Steuerelementen mithilfe eines impliziten Stil Schlüssels.A Type key is fundamental to how controls can be styled by themes, through an implicit style key. Weitere Informationen finden Sie unter Übersicht über das Erstellen von Steuerelementen.For more information, see Control Authoring Overview.

Die alternative deklarative Methode zum Verweisen auf eine Ressource ist eine dynamikresource-Markup Erweiterung.The alternative declarative means of referencing a resource is as a DynamicResource Markup Extension.

Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax.Attribute syntax is the most common syntax used with this markup extension. Das Zeichenfolgentoken, das auf die StaticResource-Bezeichnerzeichenfolge folgt, wird als ResourceKey-Wert der zugrunde liegenden StaticResourceExtension-Erweiterungsklasse zugeordnet.The string token provided after the StaticResource identifier string is assigned as the ResourceKey value of the underlying StaticResourceExtension extension class.

StaticResourcekann in der Objekt Element Syntax verwendet werden.StaticResource can be used in object element syntax. In diesem Fall ist die Angabe des Werts ResourceKey der-Eigenschaft erforderlich.In this case, specifying the value of the ResourceKey property is required.

StaticResource kann zudem in einer ausführlichen Attributverwendung verwendet werden, die die ResourceKey-Eigenschaft als Eigenschaft=Wert-Paar angibt:StaticResource can also be used in a verbose attribute usage that specifies the ResourceKey property as a property=value pair:

<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.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Da für StaticResource nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.Because StaticResource has only one settable property, which is required, this verbose usage is not typical.

In der WPFWPF XAMLXAML Prozessor Implementierung wird die Handhabung dieser Markup Erweiterung durch die StaticResourceExtension -Klasse definiert.In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the StaticResourceExtension class.

StaticResource ist eine Markuperweiterung.StaticResource is a markup extension. 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.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. Alle Markuperweiterungen in XAML verwenden die Zeichen XAMLXAML und XAMLXAML in der Attributsyntax. Dies ist die Konvention, anhand der ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss.All markup extensions in XAMLXAML use the { and } characters in their attribute syntax, which is the convention by which a XAMLXAML processor recognizes that a markup extension must process the attribute. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.For more information, see Markup Extensions and WPF XAML.

Siehe auchSee also