1
resposta

Observablecollection não funciona

Quero que a label quantidade mude na view mas ela se mantem em 0

Minha view

            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal">

                            <Label
                                x:Name="descricao"
                                HorizontalOptions="FillAndExpand"
                                Text="{Binding Descricao}"
                                VerticalTextAlignment="Center" />

                            <Label
                                x:Name="quantidade"
                                Focused="Quantidade_Focused"
                                HorizontalOptions="End"
                                HorizontalTextAlignment="Start"
                                WidthRequest="30"
                                VerticalOptions="Center"
                                Text="{Binding Quantidade, Mode=Default}"
                                />

                            <Button 
                                VerticalOptions ="Center"
                                BackgroundColor ="#66CC66"
                                HeightRequest="63"
                                HorizontalOptions="End"
                                ImageSource="observacao.png"    
                                WidthRequest="63" 
                                Clicked="Button_adicional"/>

                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Eu fiz o Binding com o ListProdutod, e quero adicionar +1 a label quantidade na view , atravez do metodo ItemTapped da listView

no code behind

    private void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
    {
        Produto produto = (Produto)e.Item;
        ViewModel.AddUmProduto.Execute(produto.Id);
    }

Meu Viewmodel

public class ComandaViewModel : BaseViewModel { ContaCliente ContaCliente;

    private ObservableCollection<Produto> _listaProdutos;
    public ObservableCollection<Produto> ListaProdutos
    {
        get { return _listaProdutos; }
        set
        {
            _listaProdutos = value;
            OnPropertyChanged();
        }
    }

    public ComandaViewModel( AcessoCatraca mesaComanda, GrupoProduto grupo)
    {
        ContaCliente = new ContaCliente(mesaComanda);

        ListaProdutos = getListProdutoBd(grupo.Codigo);
    }


    /// <summary>
    /// Remove um item (ContaCLienteItem) da lista do carrinho 
    /// </summary>
    public Command AddUmProduto
    {
        get
        {
            return new Command<int>((idProduto) =>
            {
                ListaProdutos.First(x => x.Id == idProduto).Quantidade += 1;
                OnPropertyChanged("ListaProdutos");
            });
        }
    }
    public String Titulo
    {
        get
        {

            return $"Mesa {ContaCliente.AcessoCatraca.Referencia}";
        }
    }

    private ObservableCollection<Produto> getListProdutoBd(int idGrupo)
    {
        ObservableCollection<Produto> listaDao;
        using (var conexao = DependencyService.Get<ISQLite>().pegarConexao()) 
        {
            ProdutoDao dao = new ProdutoDao(conexao, idGrupo);
            listaDao = dao.Lista;
            //Preenche ListaDeAdicionais como não null
            for (int i = 0; i < listaDao.Count; i++)
            {
                dao.Lista[i].ListaDeAdicionais = new List<Produto>();
            }
        }
        // Ordena descrição
        listaDao = new ObservableCollection<Produto>(listaDao
            .OrderBy(i => i.Descricao)
            );
        return listaDao;
    }
}
1 resposta

Olá Gabriel, tudo certo?

Apenas parte do código fica meio complicado para tentar encontrar o problema. Teria como compartilhar seu código via Dropbox, Google Drive ou Github, para que eu possa dar uma olhada?

No aguardo!