x:Statische Markuperweiterungx:Static Markup Extension

Verweist auf alle statischen by-Value-Codeentitäten, die in definiert ist eine Common Language Specification (CLS)Common Language Specification (CLS)– konforme Speicherung.References any static by-value code entity that is defined in a Common Language Specification (CLS)Common Language Specification (CLS)–compliant way. Die statische Eigenschaft, die 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 Dies ist optional.Optional. Ein Präfix, das mit einem zugeordneten, nicht standardmäßigen XAML-Namespace verweist.A prefix that refers to a mapped, non-default XAML namespace. prefix wird explizit in der Verwendung angezeigt werden, da Sie selten Eigenschaften für statische verweisen, die von einem Standard-XAML-Namespace enthalten sind.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 Members gewünschten statischen Wert (eine Konstante, eine statische Eigenschaft, eines Felds oder eines Enumerationswerts).The name of the desired static value member (a constant, a static property, a field, or an enumeration value).

HinweiseRemarks

Die Codeentität, die 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

Angeben einer beliebigen anderen Codeentität, z. B. eine nicht statische Eigenschaft bewirkt, dass einen Fehler während der Kompilierung ist die XAML-Markup kompiliert und eine XAML-Ladezeit-Analyseausnahme.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.

Möglich x:Static Verweise auf statische Felder oder Eigenschaften, die nicht in der XAML-Standardnamespace für das aktuelle XAML-Dokument; 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 Stammelement des XAML-Dokuments definiert.XAML namespaces are almost always defined on the root element of the XAML document.

Wenn sie mit der Standard-XAML-Schemakontext ausgeführt werden, können die Suchvorgänge für statische Eigenschaften von .NET Framework-XAML-Dienste und die XAML-Readern und XAML-Writer, 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-Schemakontext können CLR-Reflektion Graph objekterstellung notwendigen statische Werte bereit.This XAML schema context can use CLR reflection to provide the necessary static values for object graph construction. Die typeName Sie angeben, ist tatsächlich ein XAML Typname, keine CLR-Typnamen, auch diese sind im Wesentlichen den gleichen Namen bei Verwendung den Standard-XAML-Schemakontext, oder wenn Sie alle vorhandenen CLR-basierten XAML-implementierungsframeworks 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.

Vorsichtig, wenn Sie stellen x:Static Verweise, 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, Werte von einer Markuperweiterung bereitgestellt werden nicht aufrufen, zusätzliche wertkonvertierung.In the XAML processing sequence, provided values from a markup extension do not invoke additional value conversion. Dies gilt auch, wenn Ihre x:Static Verweis erstellt eine Zeichenfolge, und eine wertkonvertierung für Attributwerte, die basierend auf Textzeichenfolge in der Regel tritt auf, für die dieses bestimmte Element oder für alle Memberwerte des Rückgabetyps.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 anderen XAML-Verwendungen, die technisch möglich ist.There are two other XAML usages that are technically possible. Allerdings sind diese Verwendungen seltener auf, da sie unnötig ausführlich sind:However, these usages are less common because they are unnecessarily verbose:

  1. Die Objektelementsyntax.Object element syntax.

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

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

In der .NET Framework-XAML-Dienste-Implementierung, wird die Handhabung dieser Markuperweiterung durch definiert die StaticExtension Klasse.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 Markuperweiterungen in XAML verwenden die { und } Zeichen in der Attributsyntax, dies ist die Konvention mit dem ein XAML-Prozessor erkennt, dass eine Markuperweiterung einen Wert angeben, 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 XAML-Standardnamespace, die Sie für WPF-Programmierung verwenden enthält viele nützliche statische Eigenschaften nicht, und die meisten nützlich statische Eigenschaften Unterstützung wie z. B. Typkonverter, die die Verwendung ohne erleichtern {x:Static} .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 Aussagen 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, die in WPF vorhanden ist, aber ist nicht Teil der XAML-Standardnamespace für WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation).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 Verwendung von x:Static.This is a fairly common scenario for using x:Static. Können z. B. eine x:Static Verweis auf eine XAML-Namespace-Zuordnung zu den System CLR-Namespace und Mscorlib-Assembly um die statischen Eigenschaften der verweisen die Environment Klasse.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 sind auf einen Typ aus einer benutzerdefinierten Assembly verweisen.You are referencing a type from a custom assembly.

  • Sie verweisen auf einen Typ, der in einer WPF-Assembly vorhanden ist, aber innerhalb eines CLR-Namespace ist, die nicht als Teil der WPF-XAML-Standardnamespace 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 der XAML-Standardnamespace für WPF von Definitionen in den verschiedenen WPF-Assemblys ausgeführt wird (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 der CLR-Namespace besteht hauptsächlich aus Klassendefinitionen, die nicht in der Regel für XAML, wie z. B. System.Windows.Threading.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 Namespaces von XAML 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