Namespaces XAML emXamarin.FormsXAML Namespaces in Xamarin.Forms

O XAML usa o atributo XML xmlns para declarações de namespace. Este artigo apresenta a sintaxe XAML namespace e demonstra como declarar um namespace XAML para acessar um tipo.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.

Visão geralOverview

Há duas declarações de namespace XAML que estão sempre dentro do elemento raiz de um arquivo XAML.There are two XAML namespace declarations that are always within the root element of a XAML file. A primeira define o namespace padrão, conforme mostrado no exemplo de código XAML a seguir:The first defines the default namespace, as shown in the following XAML code example:

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

O namespace padrão especifica que os elementos definidos no arquivo XAML sem nenhum prefixo se referem a Xamarin.Forms classes, como ContentPage .The default namespace specifies that elements defined within the XAML file with no prefix refer to Xamarin.Forms classes, such as ContentPage.

A segunda declaração de namespace usa o x prefixo, conforme mostrado no exemplo de código XAML a seguir: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"

O XAML usa prefixos para declarar namespaces não padrão, com o prefixo que está sendo usado ao referenciar tipos dentro do namespace.XAML uses prefixes to declare non-default namespaces, with the prefix being used when referencing types within the namespace. A x declaração de namespace Especifica que os elementos definidos no XAML com um prefixo de x são usados para elementos e atributos que são intrínsecos ao XAML (especificamente a especificação XAML 2009).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).

A tabela a seguir descreve os x atributos de namespace com suporte no Xamarin.Forms :The following table outlines the x namespace attributes supported by Xamarin.Forms:

ConstructoConstruct DescriçãoDescription
x:Arguments Especifica argumentos de construtor para um construtor não padrão ou para uma declaração de objeto de método de fábrica.Specifies constructor arguments for a non-default constructor, or for a factory method object declaration.
x:Class Especifica o namespace e o nome de classe para uma classe definida em XAML.Specifies the namespace and class name for a class defined in XAML. O nome da classe deve corresponder ao nome da classe do arquivo code-behind.The class name must match the class name of the code-behind file. Observe que esse constructo só pode aparecer no elemento raiz de um arquivo XAML.Note that this construct can only appear in the root element of a XAML file.
x:DataType Especifica o tipo do objeto ao qual o elemento XAML e é filho será associado.Specifies the type of the object that the XAML element, and it's children, will bind to.
x:FactoryMethod Especifica um método de fábrica que pode ser usado para inicializar um objeto.Specifies a factory method that can be used to initialize an object.
x:FieldModifier Especifica o nível de acesso para campos gerados para elementos XAML nomeados.Specifies the access level for generated fields for named XAML elements.
x:Key Especifica uma chave exclusiva definida pelo usuário para cada recurso em um ResourceDictionary .Specifies a unique user-defined key for each resource in a ResourceDictionary. O valor da chave é usado para recuperar o recurso XAML e normalmente é usado como o argumento para a StaticResource extensão de marcação.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 Especifica um nome de objeto de tempo de execução para o elemento XAML.Specifies a runtime object name for the XAML element. x:NameA configuração é semelhante à declaração de uma variável no código.Setting x:Name is similar to declaring a variable in code.
x:TypeArguments Especifica os argumentos de tipo genérico para o construtor de um tipo genérico.Specifies the generic type arguments to the constructor of a generic type.

Para obter mais informações sobre o x:DataType atributo, consulte associações compiladas.For more information about the x:DataType attribute, see Compiled Bindings. Para obter mais informações sobre o x:FieldModifier atributo, consulte modificadores de campo.For more information about the x:FieldModifier attribute, see Field Modifiers. Para obter mais informações sobre x:Arguments os x:FactoryMethod atributos e, consulte passando argumentos em XAML.For more information about the x:Arguments and x:FactoryMethod attributes, see Passing Arguments in XAML. Para obter mais informações sobre o x:TypeArguments atributo, consulte genéricos em XAML com Xamarin.Forms .For more information about the x:TypeArguments attribute, see Generics in XAML with Xamarin.Forms.

Observação

Além dos atributos de namespace listados acima, Xamarin.Forms também inclui extensões de marcação que podem ser consumidas por meio do x prefixo de namespace.In addition to the namespace attributes listed above, Xamarin.Forms also includes markup extensions that can be consumed through the x namespace prefix. Para obter mais informações, consulte consumindo extensões de marcação XAML.For more information, see Consuming XAML Markup Extensions.

Em XAML, as declarações de namespace herdam do elemento pai para o elemento filho.In XAML, namespace declarations inherit from parent element to child element. Portanto, ao definir um namespace no elemento raiz de um arquivo XAML, todos os elementos dentro desse arquivo herdam a declaração de namespace.Therefore, when defining a namespace in the root element of a XAML file, all elements within that file inherit the namespace declaration.

Declarando namespaces para tiposDeclaring Namespaces for Types

Os tipos podem ser referenciados em XAML declarando um namespace XAML com um prefixo, com a declaração de namespace especificando o nome do namespace CLR (Common Language Runtime) e, opcionalmente, um nome de assembly.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. Isso é feito definindo valores para as seguintes palavras-chave na declaração de namespace:This is achieved by defining values for the following keywords within the namespace declaration:

  • CLR-namespace: ou usando: – o namespace CLR declarado dentro do assembly que contém os tipos a serem expostos como elementos XAML.clr-namespace: or using: – the CLR namespace declared within the assembly that contains the types to expose as XAML elements. Essa palavra-chave é necessária.This keyword is required.
  • assembly = – o assembly que contém o namespace CLR referenciado.assembly= – the assembly that contains the referenced CLR namespace. Esse valor é o nome do assembly, sem a extensão de arquivo.This value is the name of the assembly, without the file extension. O caminho para o assembly deve ser estabelecido como uma referência no arquivo de projeto que contém o arquivo XAML que fará referência ao assembly.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. Essa palavra-chave poderá ser omitida se o valor do namespace CLR estiver dentro do mesmo assembly que o código do aplicativo que está fazendo referência aos tipos.This keyword can be omitted if the clr-namespace value is within the same assembly as the application code that's referencing the types.

Observe que o caractere que separa o clr-namespace using token ou de seu valor é dois-pontos, enquanto que o caractere separando o assembly token de seu valor é um sinal de igual.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. O caractere a ser usado entre os dois tokens é um ponto-e-vírgula.The character to use between the two tokens is a semicolon.

O exemplo de código a seguir mostra uma declaração de namespace XAML:The following code example shows a XAML namespace declaration:

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

Como alternativa, isso pode ser escrito como:Alternatively, this can be written as:

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

O local prefixo é uma convenção usada para indicar que os tipos dentro do namespace são locais para o aplicativo.The local prefix is a convention used to indicate that the types within the namespace are local to the application. Como alternativa, se os tipos estiverem em um assembly diferente, o nome do assembly também deverá ser definido na declaração do namespace, conforme demonstrado no exemplo de código XAML a seguir: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>

O prefixo de namespace é especificado ao declarar uma instância de um tipo de um namespace importado, conforme demonstrado no exemplo de código XAML a seguir: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>

Para obter informações sobre como definir um esquema de namespace personalizado, consulte esquemas de namespace personalizado XAML.For information about defining a custom namespace schema, see XAML Custom Namespace Schemas.

ResumoSummary

Este artigo introduziu a sintaxe XAML namespace e demonstrou como declarar um namespace XAML para acessar um tipo.This article introduced the XAML namespace syntax, and demonstrated how to declare a XAML namespace to access a type. O XAML usa o xmlns atributo XML para declarações de namespace, e os tipos podem ser referenciados em XAML, declarando um namespace XAML com um prefixo.XAML uses the xmlns XML attribute for namespace declarations, and types can be referenced in XAML by declaring a XAML namespace with a prefix.