Após entrar com dados em cadastro e mover para aba "Lista Refeição" os dados inseridos em "Cadastro Refeição" não parecem.
ListaRefeicoes.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AluraNutricao.ListaRefeicoes"
Title="Lista Refeições">
<ContentPage.Content>
<StackLayout Padding ="25">
<ListView ItemsSource="{Binding Refeicoes}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout Padding="5" Spacing="1">
<Label Text="{Binding Descricao}" FontSize="12" />
<StackLayout Orientation="Horizontal">
<Label Text="Calorias" FontSize="10" />
<Label Text="{Binding Calorias}" FontSize="10" />
</StackLayout>
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
ListaRefeicoes.xaml.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace AluraNutricao
{
public partial class ListaRefeicoes : ContentPage
{
public ObservableCollection<Refeicao> Refeicoes { get; private set; }
public ListaRefeicoes(ObservableCollection<Refeicao> refeicoes)
{
Refeicoes = refeicoes;
BindingContext = this;
InitializeComponent();
}
}
}
CadastroRefeicao.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AluraNutricao.CadastroRefeicao"
Title ="Cadastro Refeições">
<ContentPage.Content>
<StackLayout Padding="25">
<Label Text="Cadastro de refeição" FontSize="24" />
<Entry x:Name="entDescricao" Placeholder="ex: File de frango" />
<StackLayout Orientation="Horizontal">
<Label Text="Calorias" />
<Label Text="" x:Name="lblCalorias" />
</StackLayout>
<Slider Minimum="0" Maximum="1000" x:Name="sldCalorias" ValueChanged="UpdateCalorias"/>
<Button Text="Cadastrar" Clicked="SalvaRefeicao" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
CadastroRefeicao.xaml.cs
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace AluraNutricao
{
public partial class CadastroRefeicao : ContentPage
{
public ObservableCollection<Refeicao> refeicoes { get; set; }
public CadastroRefeicao(ObservableCollection<Refeicao> refeicoes)
{
refeicoes = new ObservableCollection<Refeicao>();
this.refeicoes = refeicoes;
InitializeComponent();
}
//public CadastroRefeicao(ObservableCollection<Refeicao> refeicoes)
//{
// this.refeicoes = refeicoes;
// }
public void UpdateCalorias(Object sender, EventArgs e)
{
//pega valor do stepper
double valor = sldCalorias.Value;
lblCalorias.Text = valor.ToString();
}
public void SalvaRefeicao(Object sender, EventArgs e)
{
string descricao = entDescricao.Text;
double valor = sldCalorias.Value;
string calorias = sldCalorias.Value.ToString();
if (descricao == "" || calorias=="0"){
string msg = "Por favor, entrar com dados!";
DisplayAlert("Cadastro de refeição", msg, "Ok");
}
else
{
Refeicao refeicao = new Refeicao(descricao, valor);
refeicoes.Add(refeicao);
string msg = "A refeição " + descricao + " de " + calorias + " calorias foi salva com sucesso";
DisplayAlert("Cadastro de refeição", msg, "Ok");
Clear();
}
}
private void Clear()
{
entDescricao.Text = "";
sldCalorias.Value = 0;
}
}
}
Refeicao.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AluraNutricao
{
public partial class Refeicao
{
public string Descricao { get; set; }
public double Calorias { get; set; }
public Refeicao (String descricao, double calorias)
{
this.Descricao = descricao;
this.Calorias = calorias;
}
}
}
HomeTabbePage.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AluraNutricao
{
public partial class Refeicao
{
public string Descricao { get; set; }
public double Calorias { get; set; }
public Refeicao (String descricao, double calorias)
{
this.Descricao = descricao;
this.Calorias = calorias;
}
}
}