Namespaces XAML
O XAML usa o atributo XML xmlns
para declarações de namespace. Há duas declarações de namespace XAML que estão sempre dentro do elemento raiz de um arquivo XAML. A primeira define o namespace padrão:
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
O namespace padrão especifica que os elementos definidos no arquivo XAML sem prefixo se referem a classes do .NET Multi-Platform App UI (.NET MAUI), como ContentPage, Label e Button.
A segunda declaração de namespace usa o prefixo x
:
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
O XAML usa prefixos para declarar namespaces não padrão, com o prefixo sendo usado ao referenciar tipos dentro do namespace. A declaração de namespace x
especifica que os elementos definidos no XAML com um prefixo x
são usados para elementos e atributos intrínsecos ao XAML (especificamente a especificação XAML de 2009).
A tabela a seguir descreve os constructos de x
compatíveis com o .NET MAUI:
Constructo | Descrição |
---|---|
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. |
x:Class |
Especifica o namespace e o nome da classe para uma classe definida em XAML. O nome da classe deve corresponder ao nome da classe do arquivo code-behind. Observe que este constructo só pode aparecer no elemento raiz de um arquivo XAML. |
x:ClassModifier |
Especifica o nível de acesso da classe gerada no assembly. |
x:DataType |
Especifica o tipo do objeto ao qual o elemento XAML e seus filhos serão associados. |
x:FactoryMethod |
Especifica um método de fábrica que pode ser usado para inicializar um objeto. |
x:FieldModifier |
Especifica o nível de acesso para campos gerados para elementos XAML nomeados. |
x:Key |
Especifica uma chave exclusiva definida pelo usuário para cada recurso em um ResourceDictionary. O valor da chave é usado para recuperar o recurso XAML e normalmente é usado como o argumento para a extensão de marcação StaticResource . |
x:Name |
Especifica um nome de objeto de runtime para o elemento XAML. A configuração x:Name é semelhante à declaração de uma variável no código. |
x:TypeArguments |
Especifica os argumentos de tipo genérico para o construtor de um tipo genérico. |
Para obter mais informações sobre o atributo x:ClassModifier
, confira modificadores de classe. Para obter mais informações sobre o atributo x:DataType
, confira Associações compiladas. Para obter mais informações sobre o atributo x:FieldModifier
, confira Modificadores de campo. Para obter mais informações sobre os atributos x:Arguments
e x:FactoryMethod
, confira Passar argumentos. Para obter mais informações sobre o atributo x:TypeArguments
, confira Genéricos.
Observação
Além dos constructos listados acima, o .NET MAUI também inclui extensões de marcação que podem ser consumidas por meio do prefixo de namespace x
. Para obter mais informações, confira Consumir extensões de marcação XAML.
No XAML, as declarações de namespace herdam do elemento pai para o elemento filho. Portanto, ao definir um namespace no elemento raiz de um arquivo XAML, todos os elementos dentro desse arquivo herdam a declaração de namespace.
Declarar namespaces para tipos
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 Common Language Runtime (CLR) e, opcionalmente, um nome de assembly. Isto é obtido definindo valores para as seguintes palavras-chave na declaração de namespace:
clr-namespace:
ouusing:
– o namespace CLR declarado dentro do assembly que contém os tipos a serem expostos como elementos XAML. Esta palavra-chave é necessária.assembly=
– o assembly que contém o namespace CLR referenciado. Este valor é o nome do assembly, sem a extensão de arquivo. O caminho para o assembly deve ser estabelecido como uma referência no projeto que contém o arquivo XAML que fará referência ao assembly. Esta palavra-chave poderá ser omitida se o valor de clr-namespace estiver dentro do mesmo assembly que o código do aplicativo que faz referência aos tipos.
Observação
O caractere que separa o token clr-namespace
ou using
de seu valor é dois-pontos, enquanto o caractere que separa o token assembly
de seu valor é um sinal de igual. O caractere a ser usado entre os dois tokens é um ponto e vírgula.
O exemplo de código a seguir mostra uma declaração de namespace XAML:
<ContentPage ... xmlns:local="clr-namespace:MyMauiApp">
...
</ContentPage>
Como alternativa, isto pode ser escrito como:
<ContentPage ... xmlns:local="using:MyMauiApp">
...
</ContentPage>
O prefixo local
é uma convenção usada para indicar que os tipos dentro do namespace são locais para o aplicativo. Como alternativa, se os tipos estiverem em um assembly diferente, o nome do assembly também deverá ser definido na declaração de namespace:
<ContentPage ... xmlns:controls="clr-namespace:Controls;assembly=MyControlLibrary" ...>
...
</ContentPage>
O prefixo do namespace é especificado ao declarar uma instância de um tipo de um namespace importado:
<controls:Expander IsExpanded="True">
...
</controls:Expander>
Para obter informações sobre como definir um esquema de namespace personalizado, confira Esquemas de namespace personalizado.