DynamicResource-MarkuperweiterungDynamicResource Markup Extension

Gibt einen Wert für alle XAMLXAML Eigenschaftsattribut, das von bereit, um einen Verweis auf eine Ressource definiert werden.Provides a value for any XAMLXAML property attribute by deferring that value to be a reference to a defined resource. Das Suchverhalten für diese Ressource ist analog zur Laufzeit-Suche.Lookup behavior for that resource is analogous to run-time lookup.

Verwendung von XAML-AttributenXAML Attribute Usage

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

Verwendung von XAML-EigenschaftenelementenXAML Property Element Usage

<object>  
  <object.property>  
    <DynamicResource 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 ursprünglich zugewiesen, durch die X: Key Directive , wenn eine Ressource, die im Markup erstellt wurde, oder es bereitgestellt wurde die key -Parameter beim Aufrufen von ResourceDictionary.Add , 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

Ein DynamicResource erstellt während der erstmaligen Kompilierung einen temporären Ausdruck und Suche nach Ressourcen daher verzögert, bis der Wert für die angeforderte Ressource tatsächlich erforderlich ist, um ein Objekt zu erstellen ist.A DynamicResource will create a temporary expression during the initial compilation and thus defer lookup for resources until the requested resource value is actually required in order to construct an object. Dies kann potenziell sein, nach der XAMLXAML Seite wird geladen.This may potentially be after the XAMLXAML page is loaded. Der Ressourcenwert basierend auf wichtige Suche für alle aktiven Ressourcenwörterbüchern aus dem aktuellen Seitenbereich befindet und für den Platzhalterausdruck aus der Kompilierung ersetzt wird.The resource value will be found based on key search against all active resource dictionaries starting from the current page scope, and is substituted for the placeholder expression from compilation.

Wichtig

Im Hinblick auf haben Abhängigkeitseigenschaften eine DynamicResource Ausdruck ist identisch mit die Position der dynamischen Ressourcenverweis wird angewendet.In terms of dependency property precedence, a DynamicResource expression is equivalent to the position where the dynamic resource reference is applied. Wenn Sie einen lokalen Wert einer Eigenschaft festlegen, die bisher ein DynamicResource Ausdruck als lokalen Wert, der DynamicResource vollständig entfernt.If you set a local value for a property that previously had a DynamicResource expression as the local value, the DynamicResource is completely removed. Weitere Informationen finden Sie unter Priorität von Abhängigkeitseigenschaftswerten.For details, see Dependency Property Value Precedence.

Bestimmte eignen sich besonders für DynamicResource im Gegensatz zu einem StaticResource-Markuperweiterung.Certain resource access scenarios are particularly appropriate for DynamicResource as opposed to a StaticResource Markup Extension. Finden Sie unter XAML-Ressourcen für eine Diskussion über die Vorteile und die Auswirkungen auf die Leistung der DynamicResource und StaticResource.See XAML Resources for a discussion about the relative merits and performance implications of DynamicResource and StaticResource.

Das angegebene ResourceKey sollte entsprechen, eine vorhandene Ressource bestimmt, indem die X: Key Directive auf einer bestimmten Ebene in Ihrer Seite, Anwendung, die verfügbaren Steuerelementdesigns und externe Ressourcen oder Systemressourcen, und die die Ressourcensuche wird in dieser Reihenfolge ausgeführt.The specified ResourceKey should correspond to an existing resource determined by x:Key Directive at some level in your page, application, the available control themes and external resources, or system resources, and the resource lookup will happen in that order. Weitere Informationen zur Ressourcensuche für statische und dynamische Ressourcen finden Sie unter XAML-Ressourcen.For more information about resource lookup for static and dynamic resources, see XAML Resources.

Ein Ressourcenschlüssel möglicherweise eine beliebige Zeichenfolge, die definiert, der XamlName-Grammatik.A resource key may be any string defined in the XamlName Grammar. Ein Ressourcenschlüssel möglicherweise auch andere Objekttypen, z. B. eine Type.A resource key may also be other object types, such as a Type. Ein Type Schlüssel ist wesentlich, wie Steuerelemente mithilfe von Designs formatiert werden können.A Type key is fundamental to how controls can be styled by themes. Weitere Informationen finden Sie unter Übersicht über das Erstellen von Steuerelementen.For more information, see Control Authoring Overview.

APIs für die Suche nach Ressourcen-Werte, z. B. FindResource, befolgen Sie die Suchlogik der gleichen Ressource vom verwendete DynamicResource.APIs for lookup of resource values, such as FindResource, follow the same resource lookup logic as used by DynamicResource.

Die alternative deklaratives Mittel für die verweisen auf eine Ressource ist als eine StaticResource-Markuperweiterung.The alternative declarative means of referencing a resource is as a StaticResource 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 DynamicResource-Bezeichnerzeichenfolge folgt, wird als ResourceKey-Wert der zugrunde liegenden DynamicResourceExtension-Erweiterungsklasse zugeordnet.The string token provided after the DynamicResource identifier string is assigned as the ResourceKey value of the underlying DynamicResourceExtension extension class.

DynamicResource kann in Objektelementsyntax verwendet werden.DynamicResource can be used in object element syntax. In diesem Fall geben Sie den Wert der ResourceKey Eigenschaft ist erforderlich.In this case, specifying the value of the ResourceKey property is required.

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

<object property="{DynamicResource 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 DynamicResource nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.Because DynamicResource has only one settable property, which is required, this verbose usage is not typical.

In der WPFWPF XAMLXAML -prozessorimplementierung wird die Handhabung dieser Markuperweiterung wird definiert, indem die DynamicResourceExtension Klasse.In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the DynamicResourceExtension class.

DynamicResource ist eine Markuperweiterung.DynamicResource 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