XAML-Namespaces in Xamarin.FormsXAML Namespaces in Xamarin.Forms

XAML verwendet das XML-Xmlns-Attribut für Namespacedeklarationen. In diesem Artikel stellt die Syntax des XAML-Namespace, und es wird veranschaulicht, wie einen XAML-Namespace auf einen Typ deklariert.XAML uses the xmlns XML attribute for namespace declarations. This article introduces the XAML namespace syntax, and demonstrates how to declare a XAML namespace to access a type.

ÜbersichtOverview

Es gibt zwei XAML-Namespace-Deklarationen, die immer in das Stammelement einer XAML-Datei enthalten sind.There are two XAML namespace declarations that are always within the root element of a XAML file. Der erste definiert den Standardnamespace, wie in den folgenden XAML-Codebeispiel gezeigt:The first defines the default namespace, as shown in the following XAML code example:

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

Der Standardnamespace gibt an, dass Elemente, die in der XAML-Datei ohne Präfix definiert auf Xamarin.Forms-Klassen, z. B. finden Sie unter ContentPage .The default namespace specifies that elements defined within the XAML file with no prefix refer to Xamarin.Forms classes, such as ContentPage.

Die zweite Namespacedeklaration verwendet die x Präfix, wie in den folgenden XAML-Codebeispiel gezeigt:The second namespace declaration uses the x prefix, as shown in the following XAML code example:

xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"

XAML verwendet Präfixe nicht dem Standard-Namespaces, mit dem Präfix, das verwendet wird, verweisen auf Datentypen innerhalb des Namespaces zu deklarieren.XAML uses prefixes to declare non-default namespaces, with the prefix being used when referencing types within the namespace. Die x Namespace-Deklaration gibt an, dass die Elemente innerhalb der XAML mit dem Präfix definiert x werden verwendet, für Elemente und Attribute, die für XAML (insbesondere die 2009 XAML-Spezifikation) systemintern sind.The x namespace declaration specifies that elements defined within the XAML with a prefix of x are used for elements and attributes that are intrinsic to XAML (specifically the 2009 XAML specification).

Der folgenden Tabelle werden die x Namespaceattribute von Xamarin.Forms unterstützt:The following table outlines the x namespace attributes supported by Xamarin.Forms:

KonstruktConstruct BeschreibungDescription
x:Arguments Gibt die Konstruktorargumente für einen nicht standardmäßigen Konstruktor oder einer Factory Methodendeklaration-Objekt.Specifies constructor arguments for a non-default constructor, or for a factory method object declaration.
x:Class Gibt den Namespace und den Namen für eine Klasse, die in XAML definiert.Specifies the namespace and class name for a class defined in XAML. Der Klassenname muss der Klassenname des Code-Behind-Datei übereinstimmen.The class name must match the class name of the code-behind file. Beachten Sie, dass dieses Konstrukt im Stammelement einer XAML-Datei kann nur verwendet werden.Note that this construct can only appear in the root element of a XAML file.
x:DataType Gibt den Typ des Objekts, das XAML-Element und dessen untergeordnete Elemente, die gebunden werden.Specifies the type of the object that the XAML element, and it's children, will bind to.
x:FactoryMethod Gibt eine Factorymethode, die zum Initialisieren eines Objekts verwendet werden kann.Specifies a factory method that can be used to initialize an object.
x:FieldModifier Gibt die Zugriffsebene für generierte Felder für benannte XAML-Elemente.Specifies the access level for generated fields for named XAML elements.
x:Key Gibt einen eindeutigen benutzerdefinierten Schlüssel für jede Ressource in einem ResourceDictionary.Specifies a unique user-defined key for each resource in a ResourceDictionary. Der Wert des Schlüssels wird verwendet, um die XAML-Ressource abzurufen, und wird normalerweise verwendet, als Argument für die StaticResource Markuperweiterung.The key's value is used to retrieve the XAML resource, and is typically used as the argument for the StaticResource markup extension.
x:Name Gibt einen Common Language Runtime-Objekt an, für das XAML-Element.Specifies a runtime object name for the XAML element. Festlegen von x:Name ähnelt der Deklaration einer Variablen im Code.Setting x:Name is similar to declaring a variable in code.
x:TypeArguments Gibt die generischen Typargumente an den Konstruktor eines generischen Typs an.Specifies the generic type arguments to the constructor of a generic type.

Weitere Informationen zu den x:DataType Attribut, finden Sie unter kompiliert Bindungen.For more information about the x:DataType attribute, see Compiled Bindings. Weitere Informationen zu den x:FieldModifier Attribut, finden Sie unter Feldmodifizierern.For more information about the x:FieldModifier attribute, see Field Modifiers. Weitere Informationen zu den x:Arguments, x:FactoryMethod, und x:TypeArguments Attribute finden Sie unter übergeben von Argumenten in XAML.For more information about the x:Arguments, x:FactoryMethod, and x:TypeArguments attributes, see Passing Arguments in XAML.

Hinweis

Neben den oben aufgeführten Namespaceattributen, Xamarin.Forms enthält auch Markuperweiterungen, die über genutzt werden, können die x Namespacepräfix.In addition to the namespace attributes listed above, Xamarin.Forms also includes markup extensions that can be consumed through the x namespace prefix. Weitere Informationen finden Sie unter Nutzen von XAML-Markuperweiterungen.For more information, see Consuming XAML Markup Extensions.

In XAML erben Namespacedeklarationen vom übergeordneten Element an untergeordnete Element ein.In XAML, namespace declarations inherit from parent element to child element. Aus diesem Grund, erben alle Elemente innerhalb dieser Datei bei der Definition eines Namespaces in das Stammelement einer XAML-Datei die Namespacedeklaration.Therefore, when defining a namespace in the root element of a XAML file, all elements within that file inherit the namespace declaration.

Deklarieren von Namespaces für TypenDeclaring Namespaces for Types

In XAML können Typen verwiesen werden, durch die Deklaration eines XAML-Namespaces mit einem Präfix, mit der Namespacedeklaration, die den Namespacenamen des Common Language Runtime (CLR) und optional einen Assemblynamen angeben.Types can be referenced in XAML by declaring a XAML namespace with a prefix, with the namespace declaration specifying the Common Language Runtime (CLR) namespace name, and optionally an assembly name. Dies wird erreicht, indem Sie Werte für die folgenden Schlüsselwörter in der Namespacedeklaration definieren:This is achieved by defining values for the following keywords within the namespace declaration:

  • Clr-Namespace: oder verwenden: : der CLR-Namespace deklariert wird, in die Assembly, die als XAML-Elemente verfügbar gemachten Typen enthält.clr-namespace: or using: – the CLR namespace declared within the assembly that contains the types to expose as XAML elements. Dieses Schlüsselwort ist erforderlich.This keyword is required.
  • Assembly = – die Assembly mit CLR-Namespace auf die verwiesen wird.assembly= – the assembly that contains the referenced CLR namespace. Dieser Wert ist der Name der Assembly ohne Dateierweiterung.This value is the name of the assembly, without the file extension. Der Pfad zur Assembly sollte als Referenz in der Projektdatei hergestellt werden, die die XAML-Datei enthält, die auf die Assembly verweist.The path to the assembly should be established as a reference in the project file that contains the XAML file that will reference the assembly. Dieses Schlüsselwort ausgelassen werden, wenn die Clr-Namespace Wert ist innerhalb der gleichen Assembly wie der Code der Anwendung, die die Typen verweist.This keyword can be omitted if the clr-namespace value is within the same assembly as the application code that's referencing the types.

Beachten Sie, dass als Trennzeichen zwischen den clr-namespace oder using -Token von seinem Wert ist eine aus ein Doppelpunkt, während getrennt die assembly -Token von seinem Wert wird ein Gleichheitszeichen.Note that the character separating the clr-namespace or using token from its value is a colon, whereas the character separating the assembly token from its value is an equal sign. Das zu zwischen beiden Token zu verwendende Zeichen ist ein Semikolon.The character to use between the two tokens is a semicolon.

Das folgende Codebeispiel zeigt eine XAML-Namespace-Deklaration:The following code example shows a XAML namespace declaration:

<ContentPage ... xmlns:local="clr-namespace:HelloWorld" ...>
  ...
</ContentPage>

Alternativ kann dies folgendermaßen geschrieben werden:Alternatively, this can be written as:

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

Die local Präfix ist eine Konvention verwendet, um anzugeben, dass die Typen im Namespace für die Anwendung lokal sind.The local prefix is a convention used to indicate that the types within the namespace are local to the application. Auch wenn die Typen in einer anderen Assembly sind, sollte der Name der Assembly auch in der Deklaration des Namespaces definiert werden wie in den folgenden XAML-Codebeispiel veranschaulicht:Alternatively, if the types are in a different assembly, the assembly name should also be defined in the namespace declaration, as demonstrated in the following XAML code example:

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

Der Namespace-Präfix wird dann angegeben, beim Deklarieren einer Instanz eines Typs aus einem importierten Namespace, als in den folgenden XAML-Codebeispiel veranschaulicht:The namespace prefix is then specified when declaring an instance of a type from an imported namespace, as demonstrated in the following XAML code example:

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

Informationen zum Definieren eines benutzerdefinierten Namespaces-Schemas finden Sie unter benutzerdefinierte XAML-Namespace-Schemas.For information about defining a custom namespace schema, see XAML Custom Namespace Schemas.

ZusammenfassungSummary

In diesem Artikel die Syntax des XAML-Namespace eingeführt und wurde veranschaulicht, wie einen XAML-Namespace auf einen Typ deklariert.This article introduced the XAML namespace syntax, and demonstrated how to declare a XAML namespace to access a type. XAML verwendet das xmlns XML-Attribut für Namespace-Deklarationen und Typen kann in XAML verwiesen werden, indem eine XAML-Namespace mit einem Präfix deklariert.XAML uses the xmlns XML attribute for namespace declarations, and types can be referenced in XAML by declaring a XAML namespace with a prefix.