x:Statische Markuperweiterungx:Static Markup Extension

Verweist auf jede statische Codeentität mit Nebenwert, die auf CLS-konform (Common Language Specification) definiert ist.References any static by-value code entity that is defined in a Common Language Specification (CLS)–compliant way. Die statische Eigenschaft, auf die verwiesen wird, kann verwendet werden, um den Wert einer Eigenschaft in XAML bereitzustellen.The static property that is referenced can be used to provide the value of a property in XAML.

Verwendung von XAML-AttributenXAML Attribute Usage

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

XAML-WerteXAML Values

prefix Optional.Optional. Ein Präfix, das auf einen zugeordneten, nicht standardmäßigen XAML-Namespace verweist.A prefix that refers to a mapped, non-default XAML namespace. prefixwird explizit in der Verwendung angezeigt, da Sie selten auf statische Eigenschaften verweisen, die aus einem standardmäßigen XAML-Namespace stammen.prefix is shown explicitly in the usage because you rarely reference static properties that come from a default XAML namespace. Siehe Hinweise.See Remarks.
typeName Erforderlich.Required. Der Name des Typs, der den gewünschten statischen Member definiert.The name of the type that defines the desired static member.
staticMemberName Erforderlich.Required. Der Name des gewünschten statischen Wertelements (eine Konstante, eine statische Eigenschaft, ein Feld oder ein Enumerationswert).The name of the desired static value member (a constant, a static property, a field, or an enumeration value).

BemerkungenRemarks

Die Codeentität, auf die verwiesen wird, muss eine der folgenden sein:The code entity that is referenced must be one of the following:

  • Eine KonstanteA constant
  • Eine statische EigenschaftA static property
  • Ein FeldA field
  • Ein EnumerationswertAn enumeration value

Das Angeben einer anderen Codeentität, z. B. einer nicht statischen Eigenschaft, verursacht einen Kompilierungsfehler, wenn das XAML Markup kompiliert wird, oder eine XAML-Ausnahme für die Lastzeitanalyse.Specifying any other code entity, such as a nonstatic property, causes a compile-time error if the XAML is markup compiled, or a XAML load-time parse exception.

Sie können x:Static Verweise auf statische Felder oder Eigenschaften erstellen, die nicht im Standard-XAML-Namespace für das aktuelle XAML-Dokument enthalten sind. Dies erfordert jedoch eine Präfixzuordnung.You can make x:Static references to static fields or properties that are not in the default XAML namespace for the current XAML document; however, this requires a prefix mapping. XAML-Namespaces werden fast immer im Stammelement des XAML-Dokuments definiert.XAML namespaces are almost always defined on the root element of the XAML document.

Die Suchvorgänge für statische Eigenschaften können von .NET XAML Services und seinen XAML-Readern und XAML-Writern ausgeführt werden, wenn sie mit dem standardmäßigen XAML-Schemakontext ausgeführt werden.The lookup operations for static properties can be performed by .NET XAML Services and its XAML readers and XAML writers, when they are running with the default XAML schema context. Dieser XAML-Schemakontext kann CLR-Reflektion verwenden, um die erforderlichen statischen Werte für die Objektdiagrammerstellung bereitzustellen.This XAML schema context can use CLR reflection to provide the necessary static values for object graph construction. Der typeName von Ihnen angegebene Name ist eigentlich ein XAML-Typname und kein CLR-Typname, obwohl diese im Wesentlichen derselbe Name sind, wenn sie den standardmäßigen XAML-Schemakontext verwenden oder alle vorhandenen CLAML-basierten XAML-implementierenden Frameworks verwenden.The typeName you specify is actually a XAML type name, not a CLR type name, although these are essentially the same name when using the default XAML schema context or when using all existing CLR-based XAML-implementing frameworks.

Seien Sie vorsichtig, wenn Sie Verweise vornehmen, x:Static die nicht direkt der Typ des Werts einer Eigenschaft sind.Use caution when you make x:Static references that are not directly the type of a property's value. In der XAML-Verarbeitungssequenz rufen bereitgestellte Werte aus einer Markuperweiterung keine zusätzliche Wertkonvertierung auf.In the XAML processing sequence, provided values from a markup extension do not invoke additional value conversion. Dies gilt auch x:Static dann, wenn Ihr Verweis eine Textzeichenfolge erstellt und eine Wertkonvertierung für Attributwerte basierend auf Textzeichenfolge nmöglich entweder für dieses bestimmte Element oder für Elementwerte des Rückgabetyps erfolgt.This is true even if your x:Static reference creates a text string, and a value conversion for attribute values based on text string typically occurs either for that specific member or for any member values of the return type.

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 x:Static-Bezeichnerzeichenfolge folgt, wird als Member-Wert der zugrunde liegenden StaticExtension-Erweiterungsklasse zugeordnet.The string token provided after the x:Static identifier string is assigned as the Member value of the underlying StaticExtension extension class.

Es gibt zwei weitere XAML-Verwendungen, die technisch möglich sind.There are two other XAML usages that are technically possible. Diese Verwendungen sind jedoch seltener, da sie unnötig ausführlich sind:However, these usages are less common because they are unnecessarily verbose:

  1. Objektelementsyntax.Object element syntax.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Attributsyntax mit expliziter Member-Eigenschaft für Initialisierungszeichenfolge.Attribute syntax with explicit Member property for initialization string.

    <object property="{x:Static Member=prefix:typeName.staticMemberName}" ... />
    

In der .NET XAML Services-Implementierung wird die Verarbeitung StaticExtension für diese Markuperweiterung von der Klasse definiert.In .NET XAML Services implementation, the handling for this markup extension is defined by the StaticExtension class.

x:Static ist eine Markuperweiterung.x:Static is a markup extension. Alle Markuperweiterungen in XAML verwenden die { und } Zeichen in ihrer Attributsyntax, d. h. der Konvention, nach der ein XAML-Prozessor erkennt, dass eine Markuperweiterung einen Wert bereitstellen muss.All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must provide a value. Weitere Informationen zur Markuperweiterungen finden Sie unter Markup Extensions for XAML Overview.For more information about markup extensions, see Markup Extensions for XAML Overview.

Hinweise zur WPF-VerwendungWPF Usage Notes

Der standardmäßige XAML-Namespace, den Sie für die WPF-Programmierung verwenden, enthält nicht viele nützliche statische Eigenschaften, {x:Static} und die meisten nützlichen statischen Eigenschaften unterstützen z. B. Typkonverter, die die Verwendung ohne die Verwendung erleichtern.The default XAML namespace you use for WPF programming does not contain many useful static properties, and most of the useful static properties have support such as type converters that facilitate the usage without requiring {x:Static} . Für statische Eigenschaften müssen Sie ein Präfix für einen XAML-Namespace zuordnen, wenn eine der folgenden Optionen zutrifft:For static properties, you must map a prefix for a XAML namespace if one of the following is true:

  • Sie verweisen auf einen Typ, der in WPF vorhanden ist, aber nicht Teilhttp://schemas.microsoft.com/winfx/2006/xaml/presentationdes standardmäßigen XAML-Namespace für WPF ( ) ist.You are referencing a type that exists in WPF but is not part of the default XAML namespace for WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation). Dies ist ein ziemlich x:Statichäufiges Szenario für die Verwendung von .This is a fairly common scenario for using x:Static. Sie können z. x:Static B. einen Verweis mit einer System XAML-Namespacezuordnung zum CLR-Namespace und Environment zur mscorlib-Assembly verwenden, um auf die statischen Eigenschaften der Klasse zu verweisen.For example, you might use an x:Static reference with a XAML namespace mapping to the System CLR namespace and mscorlib assembly in order to reference the static properties of the Environment class.

  • Sie verweisen auf einen Typ aus einer benutzerdefinierten Assembly.You are referencing a type from a custom assembly.

  • Sie verweisen auf einen Typ, der in einer WPF-Assembly vorhanden ist, dieser Typ befindet sich jedoch in einem CLR-Namespace, der nicht als Teil des WPF-Standard-XAML-Namespace zugeordnet wurde.You are referencing a type that exists in a WPF assembly, but that type is within a CLR namespace that was not mapped to be part of the WPF default XAML namespace. Die Zuordnung von CLR-Namespaces zum Standardmäßigen XAML-Namespace für WPF wird durch Definitionen in den verschiedenen WPF-Assemblys durchgeführt (weitere Informationen zu diesem Konzept finden Sie unter XAML-Namespaces und Namespace-Zuordnung für WPF XAML).The mapping of CLR namespaces into the default XAML namespace for WPF is performed by definitions in the various WPF assemblies (for more information about this concept, see XAML Namespaces and Namespace Mapping for WPF XAML). Nicht zugeordnete CLR-Namespaces können vorhanden sein, wenn dieser CLR-Namespace hauptsächlich aus Klassendefinitionen System.Windows.Threadingbesteht, die normalerweise nicht für XAML vorgesehen sind, z. B. .Non-mapped CLR namespaces can exist if that CLR namespace is composed mostly of class definitions that are not typically intended for XAML, such as System.Windows.Threading.

Weitere Informationen zur Verwendung von Präfixen und XAML-Namespaces für WPF finden Sie unter XAML-Namespaces und Namespace-Zuordnung für WPF XAML.For more information on how to use prefixes and XAML namespaces for WPF, see XAML Namespaces and Namespace Mapping for WPF XAML.

Weitere InformationenSee also