Dela via


StaticResource Markup-tillägg

Ger ett värde för alla XAML-egenskapsattribut genom att leta upp en referens till en redan definierad resurs. Uppslagsbeteendet för den resursen motsvarar uppslagning vid inläsningstid, som letar efter resurser som tidigare har lästs in från märkningen av den aktuella XAML-sidan och andra applikationskällor, och som genererar resursvärdet som egenskapsvärde i körningstidens objekt.

XAML-attributanvändning

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

Användning av XAML-objektelement

<object>
  <object.property>
<StaticResource 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

Viktigt!

En StaticResource får inte försöka göra en vidarereferens till en resurs som definieras lexikalt ytterligare i XAML-filen. Att göra det stöds inte, och även om en sådan referens fungerar kan ett försök att använda en framåt-referens leda till en prestandapåverkan vid laddningstid när de interna hashtabellerna som representerar en ResourceDictionary genomsöks. För bästa resultat justerar du sammansättningen av dina resursordlistor så att vidarebefordrade referenser kan undvikas. Om du inte kan undvika en referens för vidarebefordran använder du DynamicResource Markup Extension i stället.

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

En resursnyckel kan vara valfri sträng som definieras 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, via en implicit formatnyckel. För mer information, se Kontrollredigeringsöversikt.

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

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

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

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

<object property="{StaticResource 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 StaticResource 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 StaticResourceExtension.

StaticResource är ett markup-tillägg. 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 markupextensioner i XAML använder tecknen { och } i attributsyntaxen, vilket är den konvention genom vilken en XAML-processor känner igen att en markupextension måste bearbeta attributet. Mer information finns i Markup Extensions and WPF XAML.

Se även