Share via


ThemeDictionary-Markuperweiterung

Bietet Autoren von benutzerdefinierten Steuerelementen oder Anwendungen, die Steuerelemente von Drittanbietern integrieren, eine Möglichkeit, Design-spezifische Ressourcenwörterbücher für das Formatieren der Steuerelemente zu verwenden.

Verwendung von XAML-Attributen

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

Verwendung von XAML-Objektelementen

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

XAML-Werte

assemblyUri

Die uniform resource identifier (URI) der Assembly, die Designinformationen enthält. In der Regel ist dies ein Paket-URI, der auf eine Assembly in dem größeren Paket verweist. Assemblyressourcen und Paket-URIs vereinfachen die Bereitstellung. Weitere Informationen finden Sie unter Paket-URI in WPF.

Hinweise

Diese Erweiterung ist dazu gedacht, nur einen bestimmten Eigenschaftswert zu füllen: einen Wert für ResourceDictionary.Source.

Indem Sie diese Erweiterung verwenden, können Sie eine einzelne Assembly angeben, die nur aus Ressourcen besteht und einige Stile enthält, die nur verwendet werden können, wenn das Windows Aero-Design auf das System des Benutzers angewendet wird, sowie andere Stile, die nur verwendet werden können, wenn Luna aktiv ist, usw. Durch die Verwendung dieser Erweiterung können die Inhalte eines steuerelementspezifischen Ressourcenwörterbuchs automatisch ungültig gemacht und neu geladen werden, sodass sie bei Bedarf für ein anderes Design angegeben werden können.

Die assemblyUri-Zeichenfolge (AssemblyName-Eigenschaftswert) bildet die Grundlage einer Benennungskonvention, die angibt, welches Wörterbuch für ein bestimmtes Design gültig ist. Die ProvideValue-Logik für ThemeDictionary entspricht der Konvention, da ein uniform resource identifier (URI) generiert wird, der auf eine bestimmte in einer vorkompilierten Ressourcenassembly enthaltene Variante eines Designwörterbuchs verweist. Diese Konvention und die Designinteraktionen mit allgemeinen Formatierungen von Steuerelementen und Formatierungen auf Seiten-/Anwendungsebene als Konzept werden hier nicht im Detail behandelt. Das grundlegende Szenario für die Verwendung von ThemeDictionary ist das Angeben der Source-Eigenschaft eines ResourceDictionary, das auf der Anwendungsebene deklariert ist. Wenn Sie einen URI für die Assembly über eine ThemeDictionary-Erweiterung statt direkt als URI bereitstellen, stellt die Erweiterungslogik eine Ungültigkeitslogik bereit, die bei Änderungen des Systemdesigns gültig wird.

Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax. Das Zeichenfolgentoken, das auf die ThemeDictionary-Bezeichnerzeichenfolge folgt, wird als AssemblyName-Wert der zugrunde liegenden ThemeDictionaryExtension-Erweiterungsklasse zugeordnet.

ThemeDictionary wird möglicherweise auch in der Objektelementsyntax verwendet. In diesem Fall muss der Wert für die AssemblyName-Eigenschaft angegeben werden.

ThemeDictionary kann zudem in einer ausführlichen Attributverwendung genutzt werden, die die Member-Eigenschaft als Eigenschaft-Wert-Paar angibt:

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

Die ausführliche Verwendung ist häufig hilfreich, wenn für eine Erweiterung mehr als eine Eigenschaft festgelegt werden kann oder wenn bestimmte Eigenschaften optional sind. Da für ThemeDictionary nur eine Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.

In der WPF-XAML-Prozessorimplementierung wird die Handhabung dieser Markuperweiterung durch die ThemeDictionaryExtension-Klasse definiert.

ThemeDictionary ist eine Markuperweiterung. Markuperweiterungen werden in der Regel implementiert, wenn Attributwerte mit Escapezeichen versehen werden müssen, damit diese nicht als literale Werte oder als Handlernamen betrachtet werden, und diese Anforderung eher global und nicht nur durch den Einsatz von Typkonvertern für bestimmte Typen oder Eigenschaften erfüllt werden soll. Alle Markuperweiterungen in XAML verwenden die Zeichen { und } in der Attributsyntax. Dies ist die Konvention, anhand der ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.

Siehe auch

Konzepte

Erstellen von Formaten und Vorlagen

Übersicht über XAML (WPF)

Markuperweiterungen und WPF-XAML

WPF-Anwendungsressource, Inhalts- und Datendateien