Freigeben über


XAML-Namespaces und Namespacezuordnung

Aktualisiert: November 2007

In diesem Thema werden das Vorhandensein und der Zweck der beiden XML-Namespacezuordnungen erläutert, die im Stammtag jeder Extensible Application Markup Language (XAML)-Datei enthalten sind. Außerdem wird beschrieben, wie ähnliche Zuordnungen für das Verwenden von Elementen erzeugt werden, die in Ihrem eigenen Code und/oder innerhalb von separaten Assemblys definiert sind.

Dieses Thema enthält folgende Abschnitte.

  • WPF- und XAML-Namespacedeklarationen
  • Zuordnen zu benutzerdefinierten Klassen und Assemblys
  • Zuordnen von CLR-Namespaces zu XML-Namespaces in einer Assembly
  • Verwandte Abschnitte

WPF- und XAML-Namespacedeklarationen

Innerhalb der Namespacedeklarationen im Stammtag vieler Extensible Application Markup Language (XAML)-Dateien sind zwei XML-Namespacedeklarationen vorhanden. Die erste Deklaration ordnet den Gesamt-Windows Presentation Foundation (WPF)-Namespace als Standard zu:

xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"

Die zweite Deklaration ordnet einen separaten Extensible Application Markup Language (XAML)-Namespace zu und ordnet ihn dabei (in der Regel) dem x:-Präfix zu.

xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"

Die Beziehung zwischen diesen beiden Deklarationen sieht so aus, dass XAML eine Sprachdefinition ist, während WPF eine Implementierung ist, die XAML als Sprache verwendet. Die XAML-Sprache gibt bestimmte Sprachelemente an, deren Implementierung zur Erreichung der Kompatibilität angenommen wird, und auf jedes dieser Elemente sollte über XAML-Prozessorimplementierungen zugegriffen werden können, die mit dem XAML-Namespace arbeiten. Die WPF-Implementierung und das beabsichtigte Programmiermodell verwendet im Allgemeinen den Standard-XML-Namespace für ihren eigenen APIs und verwendet ein gesondertes zugeordnetes Präfix für die in XAML erwartete Markupsyntax. Gemäß der Konvention ist dieses Präfix x:. Dieser x:-Konvention folgen Projektvorlagen, Beispielcode und die Dokumentation von Sprachfeatures innerhalb dieses SDK. Der XAML-Namespace definiert viele häufig verwendete Features, die auch für grundlegende WPF-Anwendungen notwendig sind. Um beispielsweise Code-Behind mit einer XAML-Datei mittels einer partiellen Klasse zusammenzufügen, müssen Sie diese Klasse als das x:Class-Attribut im Stammelement der relevanten XAML-Datei benennen. Auch sollte für jedes Element, das auf einer XAML-Seite definiert ist, auf die Sie als Ressource mit Schlüssel zugreifen möchten, das x:Key-Attribut für das jeweilige Element festgelegt sein. Weitere Informationen zu diesen und anderen Aspekten von XAML finden Sie unter Übersicht über XAML oder Terminologie der XAML-Syntax.

Zuordnen zu benutzerdefinierten Klassen und Assemblys

Sie können unter Verwendung einer Reihe von Token innerhalb einer xmlns-Präfixdeklaration XML-Namespaces zu Assemblys zuordnen, ähnlich wie die Standard-WPF- und XAML-Namespaces Präfixen zugeordnet werden.

Die Syntax verwendet die folgenden möglichen benannten Token und die folgende Werte:

clr-namespace: Der common language runtime (CLR)-Namespace, der innerhalb der Assembly deklariert ist, in der die als Elemente verfügbar gemachten öffentlichen Typen enthalten sind.

assembly= Die Assembly, die einen Teil oder den gesamten CLR-Namespace enthält, auf den verwiesen wird. Dieser Wert ist in der Regel nur der Name der Assembly, nicht der Pfad. Der Pfad zu dieser Assembly muss als Projektreferenz in der Projektdatei festgelegt werden, die das kompilierte XAML erzeugt. Optional kann der Wert auch eine Zeichenfolge gemäß der Definition durch AssemblyName sein, um die Versionsverwaltung und die Signierung mit starkem Namen zu integrieren.

Beachten Sie, dass das Token clr-namespace durch einen Doppelpunkt (:) als Trennzeichen von seinem Wert getrennt wird, während das assembly-Token durch ein Gleichheitszeichen (=) als Trennzeichen von seinem Wert getrennt wird. Das zwischen diesen zwei Token zu verwendende Zeichen ist ein Semikolon. Verwenden Sie auch an keiner Stelle in der Deklaration Leerzeichen. Beispiel:

xmlns:custom="clr-namespace:SDKSample;assembly=SDKSampleLibrary"

Zuordnen zu aktuellen Assemblys

assembly kann ausgelassen werden, wenn der clr-namespace, auf den verwiesen wird, innerhalb derselben Assembly definiert ist wie der Anwendungscode, der auf die benutzerdefinierten Klassen verweist. Die Syntax kann in diesem Fall auch in der Angabe von assembly= bestehen, ohne dass ein Zeichenfolgetoken auf das Gleichheitszeichen folgt.

Benutzerdefinierte Klassen können nicht als Stammelement einer Seite verwendet werden, wenn sie in derselben Assembly definiert sind. Partielle Klassen müssen nicht zugeordnet werden; nur Klassen, die keine partiellen Klassen einer Seite in einer Anwendung sind, müssen zugeordnet werden, wenn Sie beabsichtigen, diese Klassen als Elemente in XAML zu referenzieren.

Zuordnen von CLR-Namespaces zu XML-Namespaces in einer Assembly

WPF definiert ein CLR-Attribut, das durch XAML-Prozessoren verwendet wird, um mehrere CLR-Namespaces einem einzigen XML-Namespace zuzuordnen. Dieses Attribut, XmlnsDefinitionAttribute, wird auf Assemblyebene in den Quellcode eingefügt, der die Assembly erzeugt. Der WPF-Assembly-Quellcode verwendet dieses Attribut, um die verschiedenen allgemeinen Namespaces, wie z. B. System.Windows und System.Windows.Controls, dem https://schemas.microsoft.com/winfx/2006/xaml/presentation-Namespace zuzuordnen.

Das XmlnsDefinitionAttribute verwendet zwei Parameter, den XML-Namespacenamen und den CLR-Namespacenamen. Es kann mehr als ein XmlnsDefinitionAttribute vorhanden sein, um mehrere CLR-Namespaces demselben XML-Namespace zuzuordnen. Sobald die Zuordnung erfolgt ist, kann auf Member dieser Namespaces gegebenenfalls auch ohne vollständige Qualifikation verwiesen werden, indem die entsprechende using-Anweisung auf der Code-Behind-Seite der partiellen Klasse hinzugefügt wird. Weitere Informationen finden Sie unter XmlnsDefinitionAttribute.

Siehe auch

Konzepte

Übersicht über XAML

Weitere Ressourcen

Grundlagen zu XML-Namespaces