ThemeDictionary-Markuperweiterung
Bietet Autoren von benutzerdefinierten Steuerelementen oder Anwendungen, die Steuerelemente von Drittanbietern integrieren, eine Möglichkeit, designspezifische Ressourcenverzeichnisse 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
Wert | Beschreibung |
---|---|
assemblyUri |
Der einheitliche Ressourcenbezeichner (URI) der Assembly, die Designinformationen enthält. In der Regel ist dies eine Paket-URI, die auf eine Assembly in dem größeren Paket verweist. Assemblyressourcen und Paket-URIs vereinfachen die Bereitstellung. Weitere Informationen finden Sie unter Paket-URIs in WPF. |
Hinweise
Diese Erweiterung ist dazu gedacht, nur einen bestimmten Eigenschaftswert zu füllen: einen Wert für ResourceDictionary.Source.
Mithilfe dieser Erweiterung 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 kann der Inhalt eines steuerelementspezifischen Ressourcenverzeichnisses automatisch ungültig gemacht und erneut geladen werden, sodass er bei Bedarf für ein anderes Design angegeben werden kann.
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
zur Vervollständigung der Konvention erzeugt einen Uniform Resource Identifier (URI), der auf eine bestimmte Variante des Themenwörterbuchs verweist, die in einer vorkompilierten Ressourcengruppe enthalten ist. 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 die Angabe der Source-Eigenschaft einer deklarierten ResourceDictionary
auf der Anwendungsebene. Wenn Sie einen URI für die Assembly über eine ThemeDictionary
-Erweiterung und nicht direkt als URI bereitstellen, bietet die Erweiterungslogik eine Ungültigkeitslogik, 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
kann auch in der Objektelementsyntax verwendet werden. In diesem Fall ist die Angabe des Werts der AssemblyName-Eigenschaft erforderlich.
ThemeDictionary
kann zudem in einer ausführlichen Attributverwendung verwendet 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 (erforderliche) 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, durch die ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.
Weitere Informationen
.NET Desktop feedback