Se trata de um app inicial para cálculo do valor da hora do profissional freelancer.
Para criar um projeto Xamarin Forms vá em File -> new -> Project
Em Visual C#, escolha a opção Cross-platform, a direita terá somente a opção Mobile App(Xamarin Forms), a escolha. Dê um nome para o projeto, para o caminho do projeto escolha um caminho mais curto, como por exemplo colocar na raiz de c: devido ao visual studio dar erros quando escolhido um caminho muito extenso. Clique em Ok.
Agora escolha a opção Blank App. Deixe marcado as opções IOS e Android. Marque a opção .NET Standard e clique em OK. O projeto será criado.
Como usaremos navegação entre telas, temos que definir que nossa tela inicial seja chamada já utilizando navegação. Abra o arquivo App.xaml.cs, no construtor tem o seguinte código:
MainPage = new MainPage();
Altere para o cógido abaixo:
MainPage = new NavigationPage(new MainPage());
Execute o projeto e veja se abriu a tela default do xamarin, similar a imagem abaixo:
Vamos criar uma Page chamada CalculoValorHoraPage, clique com o botão direito sobre o projeto principal (chamado CalculadoraFreelancer01), vá em Add -> new item, escolha Xamarin Forms, nas opções a esquerda que serão mostradas, escolha a escrita Content Page. Cuidado para não escolher a Content Page (C#). Esta última criará somente a classe em c#, não tendo o arquivo .xaml para criação de layouts com xml.
Esta tela será responsável por calcular o valor da hora do profissional freelancer. Precisaremos então para os cálculos saber qual é o valor que o profissional quer ganhar por mês, as horas trabalhadas por dia, quantos dias irá trabalhar por mês e por fim, quantos dias terá de férias por ano. Criaremos então um campo para cada item citado anteriormente. Precisaremos também de um campo para mostrar o resultado da operação, que é o valor da hora do profissional.
Edite o arquivo CalculoValorHoraPage.xaml e adicione o código abaixo:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="CalculadoraFreelancer01.CalculoValorHoraPage"
Title="Valor da Hora"
Padding="10">
<ContentPage.Content>
<StackLayout>
<Label Text="Valor ganho por mês" />
<Entry Placeholder="Valor ganho por mês"
x:Name="ValorGanhoMes"
Keyboard="Numeric"/>
<Label Text="Horas trabalhadas por dia" />
<Entry Placeholder="Horas trabalhadas por dia"
x:Name="HorasTrabalhadasPorDia"
Keyboard="Numeric"/>
<Label Text="Dias trabalhados por mês" />
<Entry Placeholder="Dias trabalhados por mês"
x:Name="DiasTrabalhadosPorMes"
Keyboard="Numeric"/>
<Label Text="Dias de férias por ano" />
<Entry Placeholder="Dias de férias por ano"
x:Name="DiasFeriasPorAno"
Keyboard="Numeric"/>
<Label Text="R$ 00,00 / hora"
x:Name="ValorDaHora"
FontSize="Large"
TextColor="Green"/>
<Button Text="Calcular"
BackgroundColor="#6699ff"
TextColor="White"
x:Name="CalcularValorHoraButton"/>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Altere o arquivo App.xaml.cs para colocar como a tela inicial esta que acabamos de criar
MainPage = new NavigationPage(new CalculoValorHoraPage());
Agora mandamos executar o projeto, a tela gerada deverá ser igual a esta:
Utilizamos nos campos de entrada de texto (Entry) o Keyboard="Numeric", mas há outros tipos de teclado, como Email e Telephone. Pra mais informações veja a documentação da Microsoft: Documentação do Entry
Todo arquivo .xaml tem uma classe vinculada a ele, terminado com o nome .xaml.cs.
Tudo que é feito no xaml, conseguimos acessar na nossa classe C#, e nessa classe também conseguimos criar layouts e atribuir no nosso xaml. Ao utilizarmos essa classe, falamos que estamos fazendo código em CodeBehind.
Então vamos no arquivo CalculoValorHoraPage.xaml.cs, no construtor da classe vamos atribuir o evento de click para o nosso botão de calcular. O código ficará como o mostrado abaixo:
public CalculoValorHoraPage ()
{
InitializeComponent ();
CalcularValorHoraButton.Clicked += CalcularValorHoraButton_Clicked;
}
Agora criaremos a função responsável pelo cálculo:
private void CalcularValorHoraButton_Clicked(object sender, EventArgs e)
{
double valorGanhoAnual = double.Parse(ValorGanhoMes.Text) * 12;
int totalDiasTrabalhadosPorAno = int.Parse(DiasTrabalhadosPorMes.Text) * 12;
if (!string.IsNullOrEmpty(DiasFeriasPorAno.Text))
{
totalDiasTrabalhadosPorAno -= int.Parse(DiasFeriasPorAno.Text);
}
double valorHora = valorGanhoAnual / (totalDiasTrabalhadosPorAno * int.Parse(HorasTrabalhadasPorDia.Text));
ValorDaHora.Text = $"{valorHora.ToString("C")} / hora";
}
Vamos mandar executar o projeto e testar o cálculo: