Olá, gostaria de saber se quando o noso a app esta sendo iniciado, o android "Renderiza", (inicia) primeiro o code behind ou as views .xaml ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, gostaria de saber se quando o noso a app esta sendo iniciado, o android "Renderiza", (inicia) primeiro o code behind ou as views .xaml ?
Oi Marco, tudo bem?
Vamos pegar um exemplo de um formulário AgendamentoView. Ele é composto por 3 arquivos no Xamarin Forms:
public partial class AgendamentoView : ContentPage
{
public Veiculo Veiculo { get; set; }
public string Nome { get; set; }
public string Fone { get; set; }
public string Email { get; set; }
public DateTime DataAgendamento { get; set; }
public TimeSpan HoraAgendamento { get; set; }
public AgendamentoView(Veiculo veiculo)
{
this.Veiculo = veiculo;
InitializeComponent();
this.BindingContext = this;
}
private void Button_Clicked(object sender, EventArgs e)
{
DisplayAlert("Salvar Agendamento", "Nome: " + Nome, "Ok");
}
}
A *view * AgendamentoView .xaml
A classe gerada automaticamente AgendamentoView .xaml.g.cs:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace TestDrive.Views {
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
public partial class AgendamentoView : global::Xamarin.Forms.ContentPage {
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
private void InitializeComponent() {
this.LoadFromXaml(typeof(AgendamentoView));
}
}
}
É importante notar que as classes são marcadas como partial, isto é, no fim das contas, é compilada apenas uma classe AgendamentoView a partir das classes parciais.
Agora note o construtor no arquivo code-behind:
public AgendamentoView(Veiculo veiculo)
{
this.Veiculo = veiculo;
InitializeComponent();
this.BindingContext = this;
}
Note como o método InitializeComponent(); é chamado. Esse método é criado no arquivo gerado automaticamente (): AgendamentoView.xaml.g.cs:
[System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Forms.Build.Tasks.XamlG", "0.0.0.0")]
private void InitializeComponent() {
this.LoadFromXaml(typeof(AgendamentoView));
}
Isso significa que o conteúdo da view XAML será carregado no momento da criação da classe code-behind AgendamentoView. Portanto:
AgendamentoView.AgendamentoView é instanciada, o código XAML do arquivo XAML é carregado e usado para construção de uma hierarquia de componentes Xamarin, que fica associada à página através da propriedade ContentPage.Children.Muito bom