Dela via


DynamicResource Markup-tillägg

Ger ett värde för alla XAML-egenskapsattribut genom att skjuta upp det värdet som en referens till en definierad resurs. Uppslagsbeteendet för den resursen motsvarar körfunktionens uppslagning.

XAML-attributanvändning

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

Användning av XAML-egenskapselement

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

XAML-värden

Värde Beskrivning
key Nyckeln för den begärda resursen. Den här nyckeln tilldelades ursprungligen av x:Key Directive om en resurs skapades i markering eller angavs som parametern key när ResourceDictionary.Add anropades om resursen skapades i kod.

Anmärkningar

En DynamicResource skapar ett tillfälligt uttryck under den första kompileringen och skjuter därför upp sökning efter resurser tills det begärda resursvärdet faktiskt krävs för att skapa ett objekt. Detta kan potentiellt inträffa efter att XAML-sidan har lästs in. Resursvärdet hittas baserat på nyckelsökning mot alla aktiva resursordlistor med början från det nuvarande sidområdet och används istället för platshållaruttrycket vid kompileringen.

Viktig

När det gäller prioritet för beroendeegenskaper motsvarar ett DynamicResource uttryck den position där referensen för den dynamiska resursen tillämpas. Om du anger ett lokalt värde för en egenskap som tidigare hade ett DynamicResource uttryck som det lokala värdet tas DynamicResource bort helt. Mer information finns i värdeföreträde för beroendeegenskap.

Vissa scenarier för resursåtkomst är särskilt lämpliga för DynamicResource i stället för ett StaticResource Markup-tillägg. Se XAML-resurser för en diskussion om de relativa fördelarna och prestandakonsekvenserna av DynamicResource och StaticResource.

Den angivna ResourceKey ska motsvara en befintlig resurs som bestäms av x:Key Directive på någon nivå på sidan, programmet, tillgängliga kontrollteman och externa resurser eller systemresurser, och resurssökningen sker i den ordningen. Mer information om resurssökning för statiska och dynamiska resurser finns i XAML-resurser.

En resursnyckel kan vara valfri sträng som definierats i XamlName Grammar. En resursnyckel kan också vara andra objekttyper, till exempel en Type. En Type nyckel är grundläggande för hur kontroller kan utformas med teman. Mer information finns i Översikt över redigering av kontroll.

API:er för uppslag av resursvärden, till exempel FindResource, följer samma resurssökningslogik som används av DynamicResource.

Det alternativa deklarativa sättet att referera till en resurs är som ett StaticResource Markup Extension.

Attributsyntax är den vanligaste syntaxen som används med det här markeringstillägget. Strängtoken som anges efter DynamicResource-identifierarsträngen har tilldelats att vara ResourceKey-värdet för den underliggande DynamicResourceExtension-tilläggsklassen.

DynamicResource kan användas i objektelementsyntax. I det här fallet krävs det att du anger värdet för egenskapen ResourceKey.

DynamicResource kan också användas i en utförlig attributanvändning som anger egenskapen ResourceKey som ett egenskap=värdepar:

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

Den utförliga användningen är ofta användbar för tillägg som har mer än en inställningsbar egenskap, eller om vissa egenskaper är valfria. Eftersom DynamicResource bara har en inställningsbar egenskap, vilket krävs, är den här utförliga användningen inte typisk.

I WPF XAML-processorimplementeringen definieras hanteringen för det här påläggstillägget av klassen DynamicResourceExtension.

DynamicResource är en markup-utvidgning. Markeringstillägg implementeras vanligtvis när det finns ett krav på att escape-attributvärden ska vara andra än literalvärden eller hanterarnamn, och kravet är mer globalt än att bara placera typkonverterare på vissa typer eller egenskaper. Alla markeringstillägg i XAML använder tecknen { och } i attributsyntaxen, vilket är den konvention genom vilken en XAML-processor identifierar att ett markeringstillägg ska bearbeta attributet. Mer information finns i Markup Extensions and WPF XAML.

Se även