Delen via


StaticResource Markup-extensie

Biedt een waarde voor een XAML-eigenschapskenmerk door een verwijzing naar een al gedefinieerde resource op te zoeken. Opzoekgedrag voor die resource is vergelijkbaar met het opzoeken van de laadtijd, waarmee wordt gezocht naar resources die eerder zijn geladen vanuit de markering van de huidige XAML-pagina en andere toepassingsbronnen, en die resourcewaarde wordt gegenereerd als de eigenschapswaarde in de runtime-objecten.

XAML-kenmerkgebruik

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

Gebruik van XAML-objectelementen

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

Belangrijk

Een StaticResource mag niet proberen om een doorstuurreferentie te maken naar een resource die lexisch verder is gedefinieerd in het XAML-bestand. Als u dit probeert te doen, wordt dit niet ondersteund en zelfs als een dergelijke verwijzing niet mislukt, treedt bij het uitvoeren van de doorstuurverwijzing een prestatiestraf op voor de laadtijd wanneer de interne hashtabellen die een ResourceDictionary verwijzing vertegenwoordigen, worden doorzocht. Pas voor de beste resultaten de samenstelling van uw resourcewoordenlijsten aan, zodat doorgestuurde verwijzingen kunnen worden vermeden. Als u geen doorstuurverwijzing kunt voorkomen, gebruikt u in plaats daarvan de DynamicResource-opmaakextensie.

De opgegeven ResourceKey moet overeenkomen met een bestaande resource, geïdentificeerd met een x:Sleutelrichtlijn op een bepaald niveau op uw pagina, toepassing, de beschikbare besturingsthema's en externe resources of systeemresources. Het opzoeken van resources vindt plaats in die volgorde. Zie XAML-resources voor meer informatie over het opzoekgedrag 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 sleutel is essentieel voor de manier waarop besturingselementen kunnen worden gestijld op thema's, via een impliciete stijlsleutel. Voor meer informatie, zie Overzicht van het ontwerpen van besturingselementen.

De alternatieve declaratieve methode voor het verwijzen naar een resource is een DynamicResource Markup-extensie.

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

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

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

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

Het uitgebreide gebruik is vaak handig voor extensies met meer dan één instelbare eigenschap of als sommige eigenschappen optioneel zijn. Omdat StaticResource 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 StaticResourceExtension-klasse.

StaticResource is een markeringsextensie. Markeringsextensies worden doorgaans geïmplementeerd wanneer er een behoefte is om kenmerkwaarden anders in te stellen dan letterlijke waarden of handlernamen, en deze behoefte is breder dan alleen typeconverters toepassen op bepaalde typen of eigenschappen. 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