Xamarin.Forms Noções básicas do XAMLXamarin.Forms XAML Basics

Baixar Exemplo Baixar o exemploDownload Sample Download the sample

A linguagem XAML é uma linguagem baseada em XML criada pela Microsoft como uma alternativa ao código de programação para instanciar e inicializar objetos e organizar esses objetos em hierarquias pai-filho.The eXtensible Application Markup Language (XAML) is an XML-based language created by Microsoft as an alternative to programming code for instantiating and initializing objects, and organizing those objects in parent-child hierarchies. O XAML foi adaptado para várias tecnologias no .NET Framework, mas encontrou seu maior utilitário na definição do layout das interfaces do usuário dentro do Windows Presentation Foundation (WPF), do Silverlight, do Windows Runtime e do UWP (Plataforma Universal do Windows).XAML has been adapted to several technologies within the .NET framework, but it has found its greatest utility in defining the layout of user interfaces within the Windows Presentation Foundation (WPF), Silverlight, the Windows Runtime, and the Universal Windows Platform (UWP).

O XAML permite aos desenvolvedores definir interfaces de usuário em Xamarin.Forms aplicativos usando marcação em vez de código.XAML allows developers to define user interfaces in Xamarin.Forms applications using markup rather than code. O XAML nunca é necessário em um Xamarin.Forms programa, mas geralmente é mais sucinto e mais visualmente coerente do que o código equivalente e potencialmente passível de ferramenta.XAML is never required in a Xamarin.Forms program, but it is often more succinct and more visually coherent than equivalent code, and potentially toolable. O XAML é adequado para uso com a arquitetura de aplicativo MVVM (Model-View-ViewModel) popular: XAML define a exibição que está vinculada ao código ViewModel por meio de associações de dados baseadas em XAML.XAML is well suited for use with the popular MVVM (Model-View-ViewModel) application architecture: XAML defines the View that is linked to ViewModel code through XAML-based data bindings.

Em um arquivo XAML, o Xamarin.Forms desenvolvedor pode definir as interfaces do usuário usando todos os Xamarin.Forms modos de exibição, layouts e páginas, bem como classes personalizadas.Within a XAML file, the Xamarin.Forms developer can define user interfaces using all the Xamarin.Forms views, layouts, and pages, as well as custom classes. O arquivo XAML pode ser compilado ou inserido no executável.The XAML file can be either compiled or embedded in the executable. De qualquer forma, as informações XAML são analisadas no momento da compilação para localizar objetos nomeados e, novamente, em tempo de execução para instanciar e inicializar objetos e para estabelecer links entre esses objetos e o código de programação.Either way, the XAML information is parsed at build time to locate named objects, and again at runtime to instantiate and initialize objects, and to establish links between these objects and programming code.

O XAML tem várias vantagens sobre o código equivalente:XAML has several advantages over equivalent code:

  • Em geral, o XAML é mais sucinto e legível que o código equivalente.XAML is often more succinct and readable than equivalent code.
  • A hierarquia pai-filho inerente ao XML permite que o XAML seja imitado com maior clareza visual da hierarquia pai-filho dos objetos da interface do usuário.The parent-child hierarchy inherent in XML allows XAML to mimic with greater visual clarity the parent-child hierarchy of user-interface objects.
  • O XAML pode ser facilmente escrito por programadores, mas também se presta para ser editável e gerado por ferramentas de Design Visual.XAML can be easily hand-written by programmers, but also lends itself to be toolable and generated by visual design tools.

Também há desvantagens, principalmente relacionadas a limitações que são intrínsecas a linguagens de marcação:There are also disadvantages, mostly related to limitations that are intrinsic to markup languages:

  • O XAML não pode conter código.XAML cannot contain code. Todos os manipuladores de eventos devem ser definidos em um arquivo de código.All event handlers must be defined in a code file.
  • O XAML não pode conter loops para processamento repetitivo.XAML cannot contain loops for repetitive processing. (No entanto, vários Xamarin.Forms objetos visuais — mais notavelmente ListView — podem gerar vários filhos com base nos objetos em sua ItemsSource coleção.)(However, several Xamarin.Forms visual objects—most notably ListView —can generate multiple children based on the objects in its ItemsSource collection.)
  • O XAML não pode conter processamento condicional (no entanto, uma vinculação de dados pode fazer referência a um conversor de associação baseado em código que efetivamente permite algum processamento condicional.)XAML cannot contain conditional processing (However, a data-binding can reference a code-based binding converter that effectively allows some conditional processing.)
  • O XAML geralmente não pode instanciar classes que não definem um construtor sem parâmetros.XAML generally cannot instantiate classes that do not define a parameterless constructor. (No entanto, às vezes há uma maneira de resolver essa restrição.)(However, there is sometimes a way around this restriction.)
  • O XAML geralmente não pode chamar métodos.XAML generally cannot call methods. (Novamente, essa restrição pode, às vezes, ser superada.)(Again, this restriction can sometimes be overcome.)

Ainda não há um designer visual para gerar XAML em Xamarin.Forms aplicativos.There is not yet a visual designer for generating XAML in Xamarin.Forms applications. Todos os XAML devem ser escritos à mão, mas você pode usar o [AutoLoad de XAML (~/xamarin-Forms/XAML/Hot-reload/index.MD) no Visual Studio 2019 ou Visual Studio para Mac para exibir os designs de tela ao editá-los.All XAML must be hand-written, but you can use [XAML Hot Reload(~/xamarin-forms/xaml/hot-reload/index.md) in Visual Studio 2019 or Visual Studio for Mac to view your screen designs as you edit them. Até mesmo os desenvolvedores com muita experiência no XAML sabem que a experimentação é gratificante.Even developers with lots of experience in XAML know that experimentation is rewarding.

O XAML é basicamente XML, mas XAML tem alguns recursos de sintaxe exclusivos.XAML is basically XML, but XAML has some unique syntax features. O mais importante é:The most important are:

  • Elementos de propriedadeProperty elements
  • Propriedades anexadasAttached properties
  • Extensões de marcaçãoMarkup extensions

Esses recursos não são extensões XML.These features are not XML extensions. O XAML é totalmente legal XML.XAML is entirely legal XML. Mas esses recursos de sintaxe XAML usam XML de maneiras exclusivas.But these XAML syntax features use XML in unique ways. Eles são discutidos em detalhes nos artigos abaixo, que terminam com uma introdução ao uso de XAML para implementar o MVVM.They are discussed in detail in the articles below, which conclude with an introduction to using XAML for implementing MVVM.

RequisitosRequirements

Este artigo pressupõe familiaridade com o Xamarin.Forms .This article assumes a working familiarity with Xamarin.Forms. Este artigo também pressupõe alguma familiaridade com XML, incluindo a compreensão do uso de declarações de namespace XML e o elemento, a marca e o atributo dos termos.This article also assumes some familiarity with XML, including understanding the use of XML namespace declarations, and the terms element, tag, and attribute.

Quando estiver familiarizado com o Xamarin.Forms e o XML, comece a ler a parte 1. Introdução com XAML.When you're familiar with Xamarin.Forms and XML, start reading Part 1. Getting Started with XAML.

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.Find more Xamarin videos on Channel 9 and YouTube.