ThemeDictionary-MarkuperweiterungThemeDictionary Markup Extension

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.Provides a way for custom control authors or applications that integrate third-party controls to load theme-specific resource dictionaries to use in styling the control.

Verwendung von XAML-AttributenXAML Attribute Usage

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

Verwendung von XAML-ObjektelementenXAML Object Element Usage

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

XAML-WerteXAML Values

assemblyUri Der URI (Uniform Resource Identifier) der Assembly, die Design Informationen enthält.The uniform resource identifier (URI) of the assembly that contains theme information. In der Regel ist dies eine Paket-URI, die auf eine Assembly in dem größeren Paket verweist.Typically, this is a pack URI that references an assembly in the larger package. Assemblyressourcen und Paket-URIs vereinfachen die Bereitstellung.Assembly resources and pack URIs simplify deployment issues. Weitere Informationen finden Sie unter Paket-URIs in WPF.For more information see Pack URIs in WPF.

HinweiseRemarks

Diese Erweiterung soll nur einen bestimmten Eigenschafts Wert ausfüllen: einen Wert für ResourceDictionary.Source.This extension is intended to fill only one specific property value: a value for ResourceDictionary.Source.

Mit dieser Erweiterung können Sie eine einzelne nur-Ressource-Assembly angeben, die einige Formate enthält, die nur verwendet werden, wenn das Windows Aero-Design auf das System des Benutzers angewendet wird, andere Stile nur, wenn das Luna-Design aktiv ist usw.By using this extension, you can specify a single resources-only assembly that contains some styles to use only when the Windows Aero theme is applied to the user's system, other styles only when the Luna theme is active, and so on. 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.By using this extension, the contents of a control-specific resource dictionary can be automatically invalidated and reloaded to be specific for another theme when required.

Die assemblyUri Zeichenfolge (AssemblyName-Eigenschafts Wert) bildet die Grundlage einer Benennungs Konvention, die identifiziert, welches Wörterbuch für ein bestimmtes Design gilt.The assemblyUri string (AssemblyName property value) forms the basis of a naming convention that identifies which dictionary applies for a particular theme. Die ProvideValue Logik für ThemeDictionary schließt die Konvention ab, indem ein URI (Uniform Resource Identifier) erstellt wird, der auf eine bestimmte Design Dictionary-Variante verweist, die in einer vorkompilierten Ressourcenassembly enthalten ist.The ProvideValue logic for ThemeDictionary completes the convention by generating a uniform resource identifier (URI) that points to a particular theme dictionary variant, as contained within a precompiled resource assembly. Diese Konvention und die Designinteraktionen mit allgemeinen Formatierungen von Steuerelementen und Formatierungen auf Seiten-/Anwendungsebene als Konzept werden hier nicht im Detail behandelt.Describing this convention, or theme interactions with general control styling and page/application level styling as a concept, is not covered fully here. Das grundlegende Szenario für die Verwendung von ThemeDictionary besteht darin, die Source-Eigenschaft einer ResourceDictionary anzugeben, die auf der Anwendungsebene deklariert ist.The basic scenario for using ThemeDictionary is to specify the Source property of a ResourceDictionary declared at the application level. Wenn Sie einen URI für die Assembly über eine ThemeDictionary Erweiterung anstelle eines direkten URIs bereitstellen, stellt die Erweiterungs Logik eine invalidierungslogik bereit, die immer dann angewendet wird, wenn das Systemdesign geändert wird.When you provide a URI for the assembly through a ThemeDictionary extension rather than as a direct URI, the extension logic will provide invalidation logic that applies whenever the system theme changes.

Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax.Attribute syntax is the most common syntax used with this markup extension. Das Zeichenfolgentoken, das auf die ThemeDictionary-Bezeichnerzeichenfolge folgt, wird als AssemblyName-Wert der zugrunde liegenden ThemeDictionaryExtension-Erweiterungsklasse zugeordnet.The string token provided after the ThemeDictionary identifier string is assigned as the AssemblyName value of the underlying ThemeDictionaryExtension extension class.

ThemeDictionary kann auch in der Objektelementsyntax verwendet werden.ThemeDictionary may also be used in object element syntax. In diesem Fall muss der Wert der AssemblyName-Eigenschaft angegeben werden.In this case, specifying the value of the AssemblyName property is required.

ThemeDictionary kann zudem in einer ausführlichen Attributverwendung verwendet werden, die die Member-Eigenschaft als Eigenschaft=Wert-Paar angibt:ThemeDictionary can also be used in a verbose attribute usage that specifies the Member property as a property=value pair:

<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.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Da für ThemeDictionary nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.Because ThemeDictionary has only one settable property, which is required, this verbose usage is not typical.

In der Implementierung des WPFWPF XAMLXAML Prozessors wird die Behandlung dieser Markup Erweiterung durch die ThemeDictionaryExtension-Klasse definiert.In the WPFWPF XAMLXAML processor implementation, the handling for this markup extension is defined by the ThemeDictionaryExtension class.

ThemeDictionary ist eine Markuperweiterung.ThemeDictionary is a markup extension. 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.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. Alle Markuperweiterungen in XAML verwenden die Zeichen XAMLXAML und XAMLXAML in der Attributsyntax. Dies ist die Konvention, anhand der ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss.All markup extensions in XAMLXAML use the { and } characters in their attribute syntax, which is the convention by which a XAMLXAML processor recognizes that a markup extension must process the attribute. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.For more information, see Markup Extensions and WPF XAML.

Siehe auchSee also