Delen via


DynamicResource Markup-extensie

Biedt een waarde voor een XAML-eigenschapattribuut door die waarde uit te stellen tot een verwijzing naar een gedefinieerde resource. Opzoekgedrag voor die resource is vergelijkbaar met runtimezoekacties.

XAML-kenmerkgebruik

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

Gebruik van XAML-eigenschapselement

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

XAML-waarden

Waarde Beschrijving
key De sleutel voor de aangevraagde resource. Deze sleutel is aanvankelijk toegewezen door de x:Key Directive als een resource in opmaak is gemaakt, of is opgegeven als de parameter key bij het aanroepen van ResourceDictionary.Add als de resource in code is gemaakt.

Opmerkingen

Een DynamicResource maakt een tijdelijke expressie tijdens de eerste compilatie en stelt dus de zoekactie voor resources uit totdat de aangevraagde resourcewaarde daadwerkelijk is vereist om een object te maken. Dit kan gebeuren nadat de XAML-pagina is geladen. De resourcewaarde wordt gevonden op basis van sleutelzoekopdrachten op basis van alle actieve resourcewoordenlijsten die beginnen met het huidige paginabereik en wordt vervangen door de tijdelijke aanduidingexpressie uit de compilatie.

Belangrijk

In termen van prioriteit van afhankelijkheidseigenschappen is een DynamicResource expressie gelijk aan de positie waar de dynamische resourceverwijzing wordt toegepast. Als u een lokale waarde instelt voor een eigenschap die eerder een DynamicResource-expressie had als de lokale waarde, wordt de DynamicResource volledig verwijderd. Zie prioriteit van eigenschapswaarde voor afhankelijkhedenvoor meer informatie.

Bepaalde resourcetoegangsscenario's zijn met name geschikt voor DynamicResource in plaats van een StaticResource Markup Extension. Zie XAML-resources voor een discussie over de relatieve voordelen en prestatie-implicaties van DynamicResource en StaticResource.

De opgegeven ResourceKey moet overeenkomen met een bestaande resource die wordt bepaald door x:Key Directive op een bepaald niveau op uw pagina, toepassing, de beschikbare besturingsthema's, bepaalde externe resources of systeemresources, en de zoekfunctie voor resources zal in die volgorde worden uitgevoerd. Zie XAML-resourcesvoor meer informatie over het opzoeken van resources voor statische en dynamische resources.

Een resourcesleutel kan elke tekenreeks zijn die is gedefinieerd in de XamlName Grammar. Een resourcesleutel kan ook andere objecttypen zijn, zoals een Type. Een Type-sleutelelement is fundamenteel voor de manier waarop besturingselementen door thema's kunnen worden gestyled. Zie Overzicht van het ontwerpen van besturingselementenvoor meer informatie.

API's voor het opzoeken van resourcewaarden, zoals FindResource, volgen dezelfde logica voor het opzoeken van resources als die worden gebruikt door DynamicResource.

De alternatieve declaratieve methode voor het verwijzen naar een resource is een StaticResource Markup Extension.

Kenmerksyntaxis is de meest voorkomende syntaxis die wordt gebruikt met deze markeringsextensie. Het reeks-token dat is aangeleverd na de identificatiestring DynamicResource, wordt toegewezen als de ResourceKey-waarde van de onderliggende DynamicResourceExtension-extensieklasse.

DynamicResource kan worden gebruikt in de syntaxis van objectelementen. In dit geval is het opgeven van de waarde van de eigenschap ResourceKey vereist.

DynamicResource kan ook worden gebruikt in een uitgebreid kenmerkgebruik waarmee de eigenschap ResourceKey wordt opgegeven als een eigenschap=waardepaar:

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

Het uitgebreide gebruik is vaak handig voor extensies met meer dan één instelbare eigenschap, of als sommige eigenschappen optioneel zijn. Omdat DynamicResource slechts één instelbare eigenschap heeft, die vereist is, is dit overdreven gebruik niet gebruikelijk.

In de WPF XAML-processor-implementatie wordt de verwerking voor deze markeringsextensie gedefinieerd door de DynamicResourceExtension-klasse.

DynamicResource is een markeringsextensie. Markup-extensies worden doorgaans geïmplementeerd wanneer er een vereiste is om kenmerkwaarden anders te maken dan letterlijke waarden of handlernamen, en de vereiste is algemener dan alleen typeconverters op bepaalde typen of eigenschappen toe te passen. Alle markeringsextensies in XAML gebruiken de tekens { en } in hun kenmerksyntaxis. Dit is de conventie waarmee een XAML-processor herkent dat een markeringsextensie het kenmerk moet verwerken. Zie Markup Extensions en WPF XAMLvoor meer informatie.

Zie ook