x:Statische Markuperweiterungx:Static Markup Extension

Verweist auf eine beliebige statische Code Entität, die in einer Common Language Specification (CLS) – kompatiblen Weise 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 von einem XAML-Standard 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 Wertmembers (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).

HinweiseRemarks

Die Code Entitä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 Enumerationswert.An enumeration value

Das Angeben einer anderen Code Entität, z. b. einer nicht statischen Eigenschaft, verursacht einen Kompilierzeitfehler, wenn XAML Markup kompiliert ist, oder eine XAML-Auslastungs Analyse Ausnahme.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 Verweise x:Static auf statische Felder oder Eigenschaften erstellen, die sich nicht im XAML-Standard Namespace für das aktuelle XAML-Dokument befinden; dies erfordert jedoch eine Präfix Zuordnung.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 für das Stamm Element 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 .NET Framework XAML-Diensten und deren XAML-Readern und XAML-Writern ausgeführt werden, wenn Sie mit dem standardmäßigen XAML-Schema Kontext ausgeführt werden.The lookup operations for static properties can be performed by .NET Framework XAML Services and its XAML readers and XAML writers, when they are running with the default XAML schema context. Dieser XAML-Schema Kontext kann die CLR-Reflektion verwenden, um die erforderlichen statischen Werte für die Objekt Diagramm Erstellung bereitzustellen.This XAML schema context can use CLR reflection to provide the necessary static values for object graph construction. Der typeName von Ihnen angegebene ist tatsächlich ein XAML-Typname und kein CLR-Typname, obwohl diese im Wesentlichen denselben Namen haben, wenn Sie den standardmäßigen XAML-Schema Kontext verwenden oder alle vorhandenen CLR-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.

Gehen Sie vorsichtig vor, x:Static Wenn Sie Verweise erstellen, die nicht direkt der Typ des Eigenschafts Werts 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 Markup Erweiterung keine zusätzliche Wert Konvertierung auf.In the XAML processing sequence, provided values from a markup extension do not invoke additional value conversion. Dies gilt auch, wenn der x:Static Verweis eine Text Zeichenfolge erstellt und eine Wert Konvertierung für Attributwerte, die auf der Text Zeichenfolge basieren, in der Regel entweder für dieses bestimmte Element oder für beliebige Element Werte des Rückgabe Typs auftritt.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 andere XAML-Verwendungen, die technisch möglich sind.There are two other XAML usages that are technically possible. Diese Verwendungen sind jedoch weniger häufig, da sie unnötig ausführlich sind:However, these usages are less common because they are unnecessarily verbose:

  1. Objekt Element Syntax.Object element syntax.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Attribut Syntax mit expliziter Element Eigenschaft für die Initialisierungs Zeichenfolge.Attribute syntax with explicit Member property for initialization string.

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

In der .NET Framework XAML-Dienst Implementierung wird die Handhabung dieser Markup Erweiterung durch die StaticExtension -Klasse definiert.In the .NET Framework 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 Markup Erweiterungen in XAML verwenden die { Zeichen } und in der Attribut Syntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass eine Markup Erweiterung 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, und die meisten nützlichen statischen Eigenschaften haben Unterstützung, wie z. {x:Static} b. Typkonverter, die die Verwendung ohne Anforderung vereinfachen.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 einer der folgenden Punkte 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 Teil des standardmäßigen XAML-Namespace für WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation) 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 gängiges Szenario für die x:StaticVerwendung von.This is a fairly common scenario for using x:Static. Sie können z. b. einen x:Static Verweis mit einer XAML-Namespace Zuordnung System zur CLR-Namespace-und mscorlib-Assembly verwenden, um auf Environment 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 innerhalb eines CLR-Namespace, der nicht als Teil des WPF-XAML-Standard 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 in den XAML-Standard Namespace für WPF erfolgt durch Definitionen in den verschiedenen WPF-Assemblys (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 besteht, die in der Regel nicht für XAML vorgesehen sind, z System.Windows.Threading. 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.

Siehe auchSee also