Freigeben über


x:Static Markup Extension

Verweist auf eine statische By-Value-Codeentität, die in einer Common Language Specification (CLS)-konformen Weise definiert ist. Die statische Eigenschaft, auf die verwiesen wird, kann verwendet werden, um den Wert einer Eigenschaft in XAML bereitzustellen.

XAML-Attributverwendung

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

XAML-Werte

Wert Beschreibung
prefix Wahlfrei. Ein Präfix, das auf einen zugeordneten, nicht standardmäßigen XAML-Namespace verweist. prefix wird explizit in der Verwendung angezeigt, da Sie selten auf statische Eigenschaften verweisen, die aus einem standardmäßigen XAML-Namespace stammen. Siehe Anmerkungen.
typeName Erforderlich. Der Name des Typs, der das gewünschte statische Element definiert.
staticMemberName Erforderlich. Der Name des gewünschten statischen Wertelements (eine Konstante, eine statische Eigenschaft, ein Feld oder ein Enumerationswert).

Bemerkungen

Die Codeentität, auf die verwiesen wird, muss eine der folgenden Sein:

  • Eine Konstante
  • Eine statische Eigenschaft
  • Ein Feld
  • Ein Enumerationswert

Wenn Sie eine andere Codeentität angeben, z. B. eine nicht statische Eigenschaft, tritt ein Kompilierungsfehler auf, wenn das XAML-Markup kompiliert ist, oder eine XAML-Ladezeitanalyseausnahme.

Sie können x:Static Verweise auf statische Felder oder Eigenschaften erstellen, die sich nicht im Standard-XAML-Namespace für das aktuelle XAML-Dokument befinden; Dies erfordert jedoch eine Präfixzuordnung. XAML-Namespaces werden fast immer im Stammelement des XAML-Dokuments definiert.

Die Nachschlagevorgänge für statische Eigenschaften können von .NET XAML Services und seinen XAML-Lesern und XAML-Autoren ausgeführt werden, wenn sie mit dem standardmäßigen XAML-Schemakontext ausgeführt werden. Dieser XAML-Schemakontext kann CLR-Spiegelung verwenden, um die erforderlichen statischen Werte für die Objektdiagrammerstellung bereitzustellen. Die von Ihnen angegebene typeName ist tatsächlich ein XAML-Typname, kein CLR-Typname, obwohl diese im Wesentlichen den gleichen Namen bei Verwendung des standardmäßigen XAML-Schemakontexts oder bei Verwendung aller vorhandenen CLR-basierten XAML-implementierungsframeworks sind.

Achten Sie darauf, wenn Sie x:Static Verweise erstellen, die nicht direkt den Typ des Werts einer Eigenschaft sind. In der XAML-Verarbeitungssequenz rufen bereitgestellte Werte aus einer Markuperweiterung keine zusätzliche Wertkonvertierung auf. Dies gilt auch, wenn ihr x:Static Verweis eine Textzeichenfolge erstellt und eine Wertkonvertierung für Attributwerte basierend auf der Textzeichenfolge in der Regel entweder für dieses bestimmte Element oder für alle Memberwerte des Rückgabetyps erfolgt.

Attributsyntax ist die am häufigsten verwendete Syntax für diese Markuperweiterung. Das Zeichenfolgentoken, das bereitgestellt wird, nachdem die x:Static-Id-Zeichenfolge als Member Wert der zugrunde liegenden StaticExtension Erweiterungsklasse zugewiesen wurde.

Es gibt zwei weitere XAML-Verwendungen, die technisch möglich sind. Diese Verwendungen sind jedoch weniger häufig, da sie unnötig ausführlich sind:

  1. Objektelementsyntax.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. Attributsyntax mit expliziter Membereigenschaft für initialisierungszeichenfolge.

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

In der .NET XAML Services-Implementierung wird die Behandlung für diese Markuperweiterung durch die StaticExtension-Klasse definiert.

x:Static ist eine Markuperweiterung. Alle Markuperweiterungen in XAML verwenden die zeichen { und } in ihrer Attributsyntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass eine Markuperweiterung einen Wert bereitstellen muss. Weitere Informationen zu Markuperweiterungen finden Sie unter Markuperweiterungen für XAML Overview.

WPF-Verwendungshinweise

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 verfügen über Unterstützung wie Typkonverter, die die Verwendung vereinfachen, ohne dass {x:Static} erforderlich ist. Bei statischen Eigenschaften müssen Sie ein Präfix für einen XAML-Namespace zuordnen, wenn einer der folgenden Werte zutrifft:

  • 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). Dies ist ein ziemlich häufiges Szenario für die Verwendung von x:Static. Sie können z. B. einen x:Static Verweis mit einer XAML-Namespacezuordnung zum System CLR-Namespace und der Mscorlib-Assembly verwenden, um auf die statischen Eigenschaften der Environment-Klasse zu verweisen.

  • Sie verweisen auf einen Typ aus einer benutzerdefinierten Assembly.

  • Sie verweisen auf einen Typ, der in einer WPF-Assembly vorhanden ist. Dieser Typ befindet sich jedoch innerhalb eines CLR-Namespaces, der nicht Teil des WPF-Standard-XAML-Namespace ist. Die Zuordnung von CLR-Namespaces zum Standard-XAML-Namespace für WPF erfolgt durch Definitionen in den verschiedenen WPF-Assemblys (weitere Informationen zu diesem Konzept finden Sie unter XAML-Namespaces und Namespacezuordnung für WPF-XAML-). Nicht zugeordnete CLR-Namespaces können vorhanden sein, wenn dieser CLR-Namespace hauptsächlich aus Klassendefinitionen besteht, die normalerweise nicht für XAML vorgesehen sind, z. B. System.Windows.Threading.

Weitere Informationen zur Verwendung von Präfixen und XAML-Namespaces für WPF finden Sie unter XAML-Namespaces und Namespacezuordnung für WPF-XAML-.

Siehe auch