x:Statische Markuperweiterung

Aktualisiert: November 2007

Verweist auf alle statischen By-Value-Codeentitäten, die auf Common Language Specification (CLS)-kompatible Weise definiert sind. Die referenzierte Eigenschaft wird vor dem Laden der verbleibenden XAML-Seite ausgewertet und kann zum Angeben des Werts einer Eigenschaft in XAML verwendet werden.

Verwendung von XAML-Attributen

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

Verwendung von XAML-Objektelementen

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

XAML-Werte

prefix

Optional. Ein Präfix, das einen nicht standardmäßigen XMLNS-Namespace zuordnet. Siehe Hinweise.

typeName

Erforderlich. Der Typ, der den gewünschten statischen Member definiert.

staticMemberName

Erforderlich. Der Name des gewünschten statischen Wertmembers (eine Konstante, eine statische Eigenschaft, ein Feld oder ein Enumerationswert).

Hinweise

Die referenzierte Codeentität muss eines der folgenden Elemente sein:

  • Konstante

  • statische Eigenschaft

  • Feld

  • Enumerationswert

Wenn Sie eine andere Codeentität angeben, z. B. eine nicht statische Eigenschaft, wird ein Kompilierzeitfehler ausgelöst.

x:Static-Verweise können für statische Felder oder -Eigenschaften erstellt werden, die sich nicht im standardmäßigen XMLNS-Namespace befinden. Hierzu ist jedoch eine Präfixzuordnung erforderlich. Sie definieren den standardmäßigen XMLNS-Namespace für ein bestimmtes XAML-Element als Attribut. In der Regel erfolgt die Definition im Stammelement, so dass der XMLNS-Namespace auf alle Elemente unterhalb des Stammelements angewendet wird. Im Allgemeinen wird als standardmäßiger XML-Namespace für die Windows Presentation Foundation (WPF)-Programmierung der WPF-Namespace verwendet. Sie müssen ein Präfix zuordnen, wenn einer der folgenden Punkte zutrifft:

  • Sie verweisen auf einen Typ, der zwar in Microsoft .NET Framework vorhanden ist, der aber nicht Bestandteil des XML-Namespace von WPF ist. Dies ist häufig der Fall, wenn x:Static verwendet wird. Sie können beispielsweise einen x:Static-Verweis mit einer Präfixzuordnung zu dem System-CLR-Namespace 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. Der Typ befindet sich jedoch innerhalb eines CLR-Namespace, der nicht als Bestandteil des WPF-Namespace zugeordnet wurde. Die Zuordnung erfolgt durch Definitionen in dieser Assembly. Nicht zugeordnete CLR-Namespaces sind für WPF-Klassendefinitionen in CLR-Namespaces typisch, die im Allgemeinen nicht für XAML bestimmt sind, z. B. System.Windows.Threading.

Weitere Informationen über Präfixe und XML-Namespaces finden Sie unter XAML-Namespaces und Namespacezuordnung.

Sie können x:Static-Verweise verwenden, die nicht direkt dem Typ eines Eigenschaftenwerts entsprechen, die jedoch diesem Typ entsprechend ausgewertet werden können. Sie können beispielsweise einen x:Static-Verweis nutzen, um einen Wert aus einer Enumeration oder aus einer statischen Eigenschaft abzurufen, z. B. die durch SystemColors definierten Farben und Pinsel. Mit x:Static-Verweisen können prinzipiell alle Eigenschaften in der XAML-Syntax festgelegt werden, auch wenn diese auf einer Eigenschaft mit einem Referenztyp basieren, da die eigentliche Verarbeitung des x:Static-Werts nach der Auswertung ggf. variiert, je nach Typkonverterverhalten der Eigenschaft, auf die der statische Wert angewendet wird.

Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax. Das Zeichenfolgentoken, das auf die x:Static-Bezeichnerzeichenfolge folgt, wird als Member-Wert der zugrunde liegenden StaticExtension-Erweiterungsklasse zugeordnet.

x:Static kann in der Objektelementsyntax verwendet werden. In diesem Fall muss der Wert für die Member-Eigenschaft angegeben werden.

x:Static kann zudem in einer ausführlichen Attributverwendung genutzt werden, die die Member-Eigenschaft als Eigenschaft/Wert-Paar angibt:

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

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. Da für x:Static nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.

In der WPF-XAML-Prozessorimplementierung wird die Handhabung dieser Markuperweiterung durch die StaticExtension-Klasse definiert.

x:Static ist eine Markuperweiterung. 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. Alle Markuperweiterungen in XAML verwenden die Zeichen { und } in der Attributsyntax. Dies ist die Konvention, anhand der ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss. Allgemeine Informationen über Markuperweiterungen finden Sie unter Markuperweiterungen und XAML.

Siehe auch

Konzepte

Erstellen von Formaten und Vorlagen

Übersicht über XAML

Markuperweiterungen und XAML

Referenz

x:Type-Markuperweiterung