Freigeben über


XAML-Namespaces in Xamarin.Forms

XAML verwendet das XMLns-XML-Attribut für Namespacedeklarationen. In diesem Artikel wird die XAML-Namespacesyntax vorgestellt und das Deklarieren eines XAML-Namespaces für den Zugriff auf einen Typ veranschaulicht.

Übersicht

Es gibt zwei XAML-Namespacedeklarationen, die sich immer im Stammelement einer XAML-Datei befinden. Der erste definiert den Standardnamespace, wie im folgenden XAML-Codebeispiel dargestellt:

xmlns="http://xamarin.com/schemas/2014/forms"

Der Standardnamespace gibt an, dass in der XAML-Datei definierte Elemente ohne Präfix auf Klassen verweisen Xamarin.Forms , z ContentPage. B. .

Die zweite Namespacedeklaration verwendet das x Präfix, wie im folgenden XAML-Codebeispiel dargestellt:

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 Namespacedeklaration gibt an, dass elemente, die innerhalb des XAML-Codes mit einem Präfix x definiert sind, für Elemente und Attribute verwendet werden, die in XAML systemintern sind (insbesondere die XAML-Spezifikation 2009).

In der folgenden Tabelle sind die namespaceattribute aufgeführt, die x von Xamarin.Forms:

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: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 x:DataType Attribut finden Sie unter Compiled Bindings. Weitere Informationen zum x:FieldModifier Attribut finden Sie unter Feldmodifizierer. Weitere Informationen zu den x:Arguments Und-Attributen x:FactoryMethod finden Sie unter Übergeben von Argumenten in XAML. Weitere Informationen zum x:TypeArguments Attribut finden Sie unter Generics in XAML mit Xamarin.Forms.

Hinweis

Zusätzlich zu den oben aufgeführten Namespaceattributen gehören auch Markuperweiterungen, Xamarin.Forms die über das x Namespacepräfix genutzt werden können. Weitere Informationen finden Sie unter Verwenden von XAML-Markuperweiterungen.

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: oder using: – der IN der Assembly deklarierte CLR-Namespace, der die Typen enthält, die als XAML-Elemente verfügbar gemacht werden sollen. 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 in der Projektdatei erstellt werden, die die XAML-Datei enthält, die auf die Assembly verweist. Dieses Schlüsselwort kann weggelassen werden, wenn sich der Clr-Namespace-Wert in derselben Assembly wie der Anwendungscode befindet, der auf die Typen verweist.

Beachten Sie, dass das Zeichen, das das clr-namespace using Token vom Wert trennt, ein Doppelpunkt ist, 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:HelloWorld" ...>
  ...
</ContentPage>

Alternativ kann dies wie folgt geschrieben werden:

<ContentPage ... xmlns:local="using:HelloWorld" ...>
  ...
</ContentPage>

Das local Präfix ist eine Konvention, die verwendet wird, um anzugeben, dass die Typen innerhalb des Namespace lokal für die Anwendung sind. Wenn sich die Typen in einer anderen Assembly befinden, sollte der Assemblyname auch in der Namespacedeklaration definiert werden, wie im folgenden XAML-Codebeispiel veranschaulicht:

<ContentPage ... xmlns:behaviors="clr-namespace:Behaviors;assembly=BehaviorsLibrary" ...>
  ...
</ContentPage>

Das Namespacepräfix wird dann beim Deklarieren einer Instanz eines Typs aus einem importierten Namespace angegeben, wie im folgenden XAML-Codebeispiel veranschaulicht:

<ListView ...>
  <ListView.Behaviors>
    <behaviors:EventToCommandBehavior EventName="ItemSelected" ... />
  </ListView.Behaviors>
</ListView>

Informationen zum Definieren eines benutzerdefinierten Namespaceschemas finden Sie unter XAML Custom Namespace Schemas.

Zusammenfassung

In diesem Artikel wurde die XAML-Namespacesyntax eingeführt und veranschaulicht, wie sie einen XAML-Namespace für den Zugriff auf einen Typ deklarieren. XAML verwendet das xmlns XML-Attribut für Namespacedeklarationen, und Typen können in XAML durch Deklarieren eines XAML-Namespaces mit einem Präfix referenziert werden.