XAML-Namespaces
XAML verwendet das XML-Attribut xmlns
für Namespacedeklarationen. Es gibt zwei XAML-Namespacedeklarationen, die sich immer im Stammelement einer XAML-Datei befinden. Die erste definiert den Standardnamespace:
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
Der Standard-namespace gibt an, dass Elemente, die in der XAML-Datei ohne Präfix definiert sind, auf .NET Multiplatform App UI (.NET MAUI)-Klassen verweisen, wie ContentPage, Label und Button.
Die zweite Namespacedeklaration verwendet das x
-Präfix:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
XAML verwendet Präfixe, um nicht standardmäßige Namespaces zu deklarieren, wobei das Präfix beim Verweisen auf Typen innerhalb des Namespaces verwendet wird. Die x
-Namenspacedeklaration gibt an, dass innerhalb von XAML definierte Elemente mit dem Präfix x
für Elemente und Attribute verwendet werden, die XAML-inhärent sind (insbesondere die XAML-Spezifikation 2009).
In der folgenden Tabelle werden die von .NET MAUI unterstützten x
-Konstrukte beschrieben:
Konstrukt | Beschreibung |
---|---|
x:Arguments |
Gibt Konstruktorargumente für einen nicht standardmäßigen Konstruktor oder für eine Factorymethoden-Objektdeklaration an. |
x:Class |
Gibt den Namespace- und Klassennamen für eine in XAML definierte Klasse an. Der Klassenname muss mit dem Klassennamen der CodeBehind-Datei übereinstimmen. Beachten Sie, dass dieses Konstrukt nur im Stammelement einer XAML-Datei angezeigt werden kann. |
x:ClassModifier |
Gibt die Zugriffsebene für die generierte Klasse in der Assembly an. |
x:DataType |
Gibt den Typ des Objekts an, an das das XAML-Element und untergeordnete Elemente gebunden wird. |
x:FactoryMethod |
Gibt eine Factorymethode an, die zum Initialisieren eines Objekts verwendet werden kann. |
x:FieldModifier |
Gibt die Zugriffsebene für generierte Felder für benannte XAML-Elemente an. |
x:Key |
Gibt einen eindeutigen benutzerdefinierten Schlüssel für jede Ressource in einer ResourceDictionary an. Der Wert des Schlüssels wird verwendet, um die XAML-Ressource abzurufen, und wird normalerweise als Argument für die StaticResource -Markuperweiterung verwendet. |
x:Name |
Gibt einen Laufzeitobjektnamen für das XAML-Element an. Die Einstellung x:Name ähnelt dem Deklarieren einer Variablen im Code. |
x:TypeArguments |
Übergibt einschränkende Typargumente eines generischen Elements an den Konstruktor des generischen Typs. |
Weitere Informationen zum Attribut x:ClassModifier
finden Sie unter Klassenmodifizierer. Weitere Informationen zum Attribut x:DataType
finden Sie unter Kompilierte Bindungen. Weitere Informationen zum Attribut x:FieldModifier
finden Sie unter Feldmodifizierer. Weitere Informationen zu den Attributen x:Arguments
und x:FactoryMethod
finden Sie unter Argumente weitergeben. Weitere Informationen zum Attribut x:TypeArguments
finden Sie unter Generika.
Hinweis
Zusätzlich zu den oben aufgeführten Konstrukten enthält .NET MAUI auch Markup-Erweiterungen, die über das Namespace-Präfix x
verwendet werden können. Weitere Informationen finden Sie unter XAML-Markuperweiterung.
In XAML erben Namespacedeklarationen von übergeordnetem Element zu untergeordnetem Element. Daher erben beim Definieren eines Namespaces im Stammelement einer XAML-Datei alle Elemente innerhalb dieser Datei die Namespacedeklaration.
Deklarieren von Namespaces für Typen
Auf Typen kann in XAML verwiesen werden, indem ein XAML-Namespace mit einem Präfix deklariert wird, wobei die Namespacedeklaration den Namespacenamen der Common Language Runtime (CLR) und optional einen Assemblynamen angibt. Dies wird erreicht, indem Werte für die folgenden Schlüsselwörter (Keywords) innerhalb der Namespacedeklaration definiert werden:
clr-namespace:
oderusing:
– der in der Assembly deklarierte CLR-Namespace, der die als XAML-Elemente darzustellenden Typen enthält. Dieses Schlüsselwort (Keyword) ist erforderlich.assembly=
– die Assembly, die den referenzierten CLR-Namespace enthält. Der einfache Name der Assembly ohne Dateierweiterung. Der Pfad zur Assembly sollte als Verweis im Projekt erstellt werden, das die XAML-Datei enthält, die auf die Assembly verweist. Dieses Schlüsselwort (Keyword) kann weggelassen werden, wenn sich der Clr-Namespace-Wert innerhalb derselben Assembly wie der App-Code befindet, der auf die Typen verweist.
Hinweis
Das Zeichen, das das clr-namespace
- oder using
-Token von seinem Wert trennt, ist ein Doppelpunkt, während das Zeichen, das das assembly
-Token von seinem Wert trennt, ein Gleichheitszeichen ist. Das zwischen diesen beiden Token zu verwendende Zeichen ist ein Semikolon.
Im folgenden Beispiel wird das Deklarieren eines geschachtelten Namespace veranschaulicht:
<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
...
</ContentPage>
Alternativ kann dies wie folgt geschrieben werden:
<ContentPage ... xmlns:local="using:MyMauiApp">
...
</ContentPage>
Das local
-Präfix ist eine Konvention, die verwendet wird, um anzugeben, dass die Typen im Namespace lokal für die App sind. Wenn sich die Typen in einer anderen Assembly befinden, sollte der Assemblyname auch in der Namespacedeklaration definiert werden:
<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
...
</ContentPage>
Das Namespacepräfix wird anschließend beim Deklarieren einer Instanz eines Typs aus einem importierten Namespace angegeben:
<controls:Expander IsExpanded="True">
...
</controls:Expander>
Informationen zum Definieren eines benutzerdefinierten Namespaceschemas finden Sie unter Benutzerdefinierte Namespaceschemas.