Delen via


ThemeDictionary Opmaakextensie

Biedt een manier voor ontwikkelaars van aangepaste besturingselementen of toepassingen die besturingselementen van derden integreren om themaspecifieke resourcewoordenlijsten te laden voor het stylen van het besturingselement.

XAML-kenmerkgebruik

<object property="{ThemeDictionary assemblyUri}" ... />

Gebruik van XAML-objectelementen

<object>
  <object.property>
    <ThemeDictionary AssemblyName="assemblyUri"/>
  <object.property>
<object>

XAML-waarden

Waarde Beschrijving
assemblyUri De URI (Uniform Resource Identifier) van de assembly die themagegevens bevat. Dit is doorgaans een pakket-URI die verwijst naar een assembly in het grotere pakket. Assembly-resources en pack-URI's vereenvoudigen implementatieproblemen. Zie Pack-URI's in WPF-voor meer informatie.

Opmerkingen

Deze extensie is bedoeld om slechts één specifieke eigenschapswaarde in te vullen: een waarde voor ResourceDictionary.Source.

Met deze extensie kunt u één assembly met alleen resources opgeven die bepaalde stijlen bevat die alleen moeten worden gebruikt wanneer het Windows Aero-thema wordt toegepast op het systeem van de gebruiker, andere stijlen alleen wanneer het Luna-thema actief is, enzovoort. Door deze extensie te gebruiken, kan de inhoud van een besturingselementspecifieke resourcewoordenlijst automatisch ongeldig worden gemaakt en opnieuw worden geladen om specifiek te zijn voor een ander thema wanneer dat nodig is.

De assemblyUri tekenreeks (AssemblyName eigenschapswaarde) vormt de basis van een naamconventie waarmee wordt aangegeven welke woordenlijst van toepassing is op een bepaald thema. De ProvideValue logica voor ThemeDictionary voltooit de conventie door een URI (Uniform Resource Identifier) te genereren die verwijst naar een bepaalde variant van de themawoordenlijst, zoals opgenomen in een vooraf gecompileerde resourceassembly. Het beschrijven van deze conventie, of thema-interacties met algemene besturingsstijl en stijl op pagina-/toepassingsniveau als concept, wordt hier niet volledig behandeld. Het basisscenario voor het gebruik van ThemeDictionary is het opgeven van de eigenschap Source van een ResourceDictionary gedeclareerd op toepassingsniveau. Wanneer u een URI voor de assembly opgeeft via een ThemeDictionary-extensie in plaats van als een directe URI, biedt de extensielogica ongeldige logica die van toepassing is wanneer het systeemthema wordt gewijzigd.

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

ThemeDictionary kan ook worden gebruikt in de syntaxis van objectelementen. In dit geval is het opgeven van de waarde van de eigenschap AssemblyName vereist.

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

<object property="{ThemeDictionary AssemblyName=assemblyUri}" ... />

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

ThemeDictionary 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