XAML vs Código
C# é sem dúvida uma das maiores linguagens de programação que o mundo já viu. Você pode escrever aplicativos Xamarin.Forms inteiros em C#, e é concebível que você encontrou C# para ser tão ideal para Xamarin.Forms que você não tenha sequer considerado usando qualquer outra coisa.
Xamarin.Forms fornece uma alternativa para o C# que tem algumas vantagens distintas para determinados aspectos do desenvolvimento do programa. Esta alternativa é o XAML (pronuncia-se "zammel"), que representa o Extensible Application Markup Language. Como C#, XAML foi desenvolvido na Microsoft Corporation, e é apenas alguns anos mais jovem do que C#.
Como o próprio nome sugere, XAML adere à sintaxe XML, o Extensible Markup Language. Este livro pressupõe que você tenha familiaridade com os conceitos e sintaxe XML básico.
No sentido mais geral, XAML é uma linguagem de marcação declarativa utilizada para instanciar e inicializar objetos. Essa definição pode parecer excessivamente geral e XAML é de fato bastante flexível. Mas a maioria XAML do mundo real tem sido utilizado para a definição do usuário visual em formato de árvore. A história das interfaces de usuário baseadas XAML começa com o Windows Presentation Foundation (WPF) e continua com o Silverlight, Windows Phone 7 e 8 e Windows 8 e 10. Cada uma destas implementações de XAML suporta um conjunto um tanto diferente de elementos visuais definido pela plataforma. Da mesma forma, a implementação XAML em Xamarin.Forms suporta os elementos visuais definidos pela Xamarin.Forms, como Label, BoxView, Frame, Button, StackLayout e ContentPage.
Como você viu, uma aplicação Xamarin.Forms pode ser inteiramente escrita em código geralmente se define a aparência inicial de sua interface do usuário no construtor de uma classe que deriva de ContentPage. Se você optar por usar XAML, a marcação geralmente substitui este código construtor. Você vai descobrir que XAML fornece uma definição mais sucinta e elegante da interface do usuário e tem uma estrutura visual que melhor mimetiza a organização em árvore dos elementos visuais na página.
XAML também é geralmente mais fácil de manter e modificar do que o código equivalente. Porque XAML é XML, também é potencialmente toolable: XAML pode mais facilmente ser analisado e editado por ferramentas de software que o código C# equivalente. De fato, um impulso para trás no início XAML era facilitar uma colaboração entre programadores e designers: Os designers podem usar ferramentas de projeto que geram XAML, enquanto os programadores se concentrar no código que interage com a marcação. Esta visão talvez tenha sido cumprida à perfeição, ele certamente sugere como os aplicativos podem ser estruturados para acomodar XAML. Você usa XAML para o visual e código para a lógica subjacente.
No entanto, XAML vai além desta simples divisão de trabalho. Como você verá em um capítulo futuro, é possível definir ligações à direita no XAML que vinculam objetos de interface do usuário com os dados subjacentes.
Ao criar XAML para plataformas da Microsoft, alguns desenvolvedores usam ferramentas de design interativos, como Microsoft Blend, mas muitos outros preferem escrever à mão XAML. Nenhuma ferramenta de design está disponível para Xamarin.Forms, então escrever a mão é a única opção. Obviamente, todos os exemplos XAML neste livro são escritos à mão. Mas mesmo quando as ferramentas de design estão disponíveis, a capacidade de escrever à mão XAML é uma habilidade importante.
A perspectiva de escrever na mão o XAML pode causar alguma consternação entre os desenvolvedores por outra razão: XML é notoriamente detalhado. No entanto, você verá quase imediatamente que XAML é muitas vezes mais conciso do que o código C# equivalente. O verdadeiro poder do XAML torna-se evidente apenas incrementalmente, no entanto, e não serão totalmente visíveis até o capítulo 19, quando você usa XAML para a construção de modelos para vários itens exibidos em um ListView.
É natural para os programadores que preferem linguagens fortemente tipadas, como C# para ser cético em relação a uma linguagem de marcação onde tudo é uma cadeia de texto. Mas você verá em breve como XAML é um análogo muito rigoroso de código de programação. Muito do que é permitido em seus arquivos XAML é definida pelas classes e propriedades que compõem a interface de programação de aplicativo Xamarin.Forms. Por esta razão, você pode até começar a pensar em XAML como uma linguagem de marcação "fortemente digitada". O analisador XAML faz o seu trabalho de uma forma muito mecânica com base na infra-estrutura de API subjacente. Um dos objetivos deste capítulo e o próximo é desmistificar XAML e esclarecer o que acontece quando o XAML é analisado.
No entanto, código e marcação são muito diferentes: Código define um processo de marcação enquanto define um estado. XAML tem várias deficiências que são intrínsecos à idiomas de marcação : XAML não tem loops, sem controle de fluxo, nenhuma sintaxe cálculo algébrico, e não há manipuladores de eventos. No entanto, XAML define vários recursos que ajudam a compensar algumas dessas deficiências. Você vai ver muitas destas características nos capítulos futuros.
Se você não quiser usar XAML, você não precisa. Tudo o que pode ser feito em XAML pode ser feito em C#. Mas cuidado: Às vezes os desenvolvedores obtem um gostinho de XAML e se deixam levar e tentar fazer tudo em XAML! Como de costume, a melhor regra é "moderação em todas as coisas." Muitas das melhores técnicas envolvem a combinação de código e XAML de maneiras interativas.
Vamos começar essa exploração com alguns trechos de código e XAML o equivalente, e depois ver como XAML e código se encaixam em um aplicativo Xamarin.Forms.