Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Slider nao Atualiza

Cara, o meu slider nao esta atualizando o valor no label

<?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="FirstProject.CadastroRefeicao" Title="Cadastro de Refeição">
  <ContentPage.Content>
    <StackLayout Padding="25">
      <Label Text="Aplicação de Teste" FontSize="34"/>

      <Label Text="Descrição"/>
      <Entry Text="{Binding Descricao}" x:Name="entDescricao" Placeholder="ex: Filé de Frango"/>

      <StackLayout Orientation="Horizontal">
        <Label Text="Calorias Slider: "/>
        <Label Text="{Binding Calorias, Mode=TwoWay}" x:Name="lblCaloriasSldr"/>
      </StackLayout>
      <Slider x:Name="sldrCalorias" Minimum="0" Maximum="1000" Value="{Binding Calorias, Mode=TwoWay}"/>

      <Button Text="Salvar"/>

    </StackLayout>
  </ContentPage.Content>
</ContentPage>
using FirstProject.Data;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace FirstProject
{
    public class CadastroRefeicaoViewModel : INotifyPropertyChanged
    {
        private string descricao;
        private double calorias;

        public string Descricao
        {
            get
            {
                return descricao;
            }
            set
            {
                if (value != descricao)
                {
                    descricao = value;
                    OnPropertyChanged("Descricao");
                }
            }
        }
        public double Calorias
        {
            get
            {
                return calorias;
            }
            set
            {
                if (calorias != value)
                {
                    calorias = value;
                    OnPropertyChanged("Calorias");
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private RefeicaoDAO dao;
        private ContentPage page;

        public CadastroRefeicaoViewModel(RefeicaoDAO dao, ContentPage page)
        {
            this.dao = dao;
            this.page = page;
        }

        private void OnPropertyChanged(string nome)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(nome));
        }

        public void salvaRefeicao(Object sender, EventArgs e)
        {

            Refeicao refeicao = new Refeicao(descricao, calorias);
            dao.Salvar(refeicao);

            string msg = "A refeição " + descricao + " de " + calorias + " calorias foi salva com sucesso";
            this.page.DisplayAlert("Salva refeição", msg, "OK");
            //Clear();
        }

    }
}
1 resposta
solução!

Olá!

Cuidado com o uso de maiúsculas e minúsculas no Binding. Se houver qualquer diferença, nem o Visual Studio nem o Xamarin acusarão erros, porém o binding não é feito e a atualização dos dados não acontece.

Troque:

Value="{Binding calorias, Mode=TwoWay}"

por:

Value="{Binding Calorias, Mode=TwoWay}"

Boa sorte e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software