none
Ajuda para chamar a função na ViewModels Xamarin RRS feed

  • Pergunta

  • Pessoal, usei um exemplo dado no curso Maratona Xamarin da Microsoft, para carregar uma lista do Json, no exemplo deles foi criado um Command na função, e na Xaml um Button chamando este command, queria saber como faço para chamar isso direto no ListView quando abre a tela.

    Procurei algumas coisa na internet para me ajudar mas não consegui nada

    Minha ViewModels

    public event PropertyChangedEventHandler PropertyChanged;
            private void OnPropertyChanged(
                [System.Runtime.CompilerServices.CallerMemberName]
                string propertyName = null) =>
                PropertyChanged?.Invoke(this,
                new PropertyChangedEventArgs(propertyName));

            private bool Busy;

            public bool IsBusy
            {
                get
                {
                    return Busy;
                }
                set
                {
                    Busy = value;
                    OnPropertyChanged();
                    GetDespesasCommand.ChangeCanExecute();
                }
            }
            public ObservableCollection<CD_Despesas> Despesas { get; set; }

            public DespesasViewModel()
            {
                Despesas = new ObservableCollection<CD_Despesas>();

                GetDespesasCommand = new Command(async () => await GetDespesas(), () => !IsBusy);

            }

            public async Task GetDespesas()
            {
                if (!IsBusy)
                {
                    Exception Error = null;
                    try
                    {
                        IsBusy = true;
                        var Repository = new Repository();
                        var itens = await Repository.GetDespesa();
                        Despesas.Clear();
                        foreach (var item in itens)
                        {
                            Despesas.Add(item);
                        }

                    }
                    catch (Exception ex)
                    {

                        Error = null;
                    }
                    finally
                    {
                        IsBusy = false;
                    }

                    if (Error != null)
                    {
                        await Xamarin.Forms.Application.Current.MainPage.DisplayAlert(
                        "Error!", Error.Message, "OK");
                    }

                }
                return;
            }

            public Command GetDespesasCommand { get; set; }

    Minha View Xaml

    <ContentPage.BindingContext>
    <VM:DespesasViewModel/>
    </ContentPage.BindingContext>

    <Button Text="Sincronizar" Command="{Binding GetDespesasCommand}"/>

    <ListView x:Name="ListViewCats" ItemsSource="{Binding GetDespesas}" >

    <ListView.ItemTemplate>
    <DataTemplate>
    <ImageCell Text="{Binding Tipo}"
    Detail="{Binding Total, StringFormat='{0:c} dólares'}"
    ImageSource="{Binding Image}"/>
    </DataTemplate>
    </ListView.ItemTemplate>

    </ListView>


    Junior Santana

    quarta-feira, 22 de março de 2017 15:37

Respostas

  • Boa tarde,

    Por gentileza, verifique o exemplo abaixo. Parece ser exatamente o que você precisa, popular uma listView quando a página é carregada.

    http://stackoverflow.com/questions/40857298/populate-listview-when-page-is-loaded-xamarin-forms-using-a-command

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Jr_inc sábado, 25 de março de 2017 00:08
    sexta-feira, 24 de março de 2017 17:13
    Moderador

Todas as Respostas

  • Bom dia,

    Obrigado por postar o código, mas poderia por gentileza, explicar mais detalhadamente o que precisa?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 23 de março de 2017 12:48
    Moderador
  • Não sei como ser mais detalhado...

    O ListView é carregado quando clicado no botão

    <Button Text="Sincronizar" Command="{Binding GetDespesasCommand}"/>

    Quero carregar o ListView quando iniciar a tela, sem ter que clicar no botão.


    Junior Santana


    • Editado Jr_inc quinta-feira, 23 de março de 2017 15:20
    quinta-feira, 23 de março de 2017 15:19
  • Boa tarde,

    Por gentileza, verifique o exemplo abaixo. Parece ser exatamente o que você precisa, popular uma listView quando a página é carregada.

    http://stackoverflow.com/questions/40857298/populate-listview-when-page-is-loaded-xamarin-forms-using-a-command

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Jr_inc sábado, 25 de março de 2017 00:08
    sexta-feira, 24 de março de 2017 17:13
    Moderador
  • Exatamente isso Robson

    Obrigado


    Junior Santana

    sábado, 25 de março de 2017 00:08