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

Atualização ObservableColletion

Gente, estou com o seguinte problema: Tenha uma listview. que em função do item clicado, eu tenho que fazer uma modificação na própria lista; depois de fazer a alteração na lista a listview não é atualizada, permanecendo a informação anterior. Segue o código Classe com a definição padrão o PropertyChange

    public class BaseTelaModelo : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName]string name = "")
        {
            if (PropertyChanged != null)
                PropertyChanged.Invoke(this, new PropertyChangedEventArgs(name));
        }
    }

Classe (herdando da Classe padrão do PropertyChange

    public class BaseObservable : BaseTelaModelo
    {
        public int Id { get; set; }
        public string Nome { get; set; }
    }

Xaml:

    <ListView 
                    x:Name="lisHorario"  SelectedItem="{Binding ClicHorario}" ItemsSource="{Binding Horarios, Mode=TwoWay}"
                    SeparatorVisibility="Default" SeparatorColor="{Binding CorBotao}">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <ViewCell.View>
                        <StackLayout Orientation="Horizontal" BackgroundColor="White"   HorizontalOptions="FillAndExpand"
                                                 VerticalOptions="Center">
                            <StackLayout    Orientation="Vertical"  >
                                <Label      Text="{Binding Nome}"></Label>
                            </StackLayout>
                        </StackLayout>
                    </ViewCell.View>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Code Behind

   public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
            this.BindingContext = new MainPageMVVM();
        }
        protected override void OnAppearing()
        {
            base.OnAppearing();
            MainPageMVVM a = new MainPageMVVM();
            MessagingCenter.Subscribe<BaseObservable>(this, "Insere",
                (msg) =>
                {
                    lisHorario.SelectedItem = null;
                    DisplayAlert("Insere", "Teste", "OK");
                });

            MessagingCenter.Subscribe<BaseObservable>(this, "Altera",
                async (msg) =>
                {
                    lisHorario.SelectedItem = null;
                    MessagingCenter.Unsubscribe<BaseObservable>(this, "Altera");
                    var resposta = await DisplayActionSheet("", "Voltar", null, "Mudar 1", "Mudar 2", "Mudar 3");
                    switch (resposta)
                    {
                        case "Mudar 1":  a.Altera1();   break;
                        case "Mudar 2": a.Altera2();   break;
                    }
                });
        }
    }

Classe MVVM

    public class MainPageMVVM : BaseObservable
    {
        private ObservableCollection<BaseObservable> h = new ObservableCollection<BaseObservable>();
        public ObservableCollection<BaseObservable> H
        {    get { return h;  }
            Set { h = value; OnPropertyChanged();            }
        }
        private BaseObservable clicH;
        public BaseObservable ClicH
        {  get { return clicH; }
            set { clicH = value;
                if (clicH != null)
                {
                    if (clicH.Nome == "Branco")
                    {
                        MessagingCenter.Send(clicH, "Insere");
                    }
                    else
                    {
                        MessagingCenter.Send(clicH, "Altera");
                    }
                }
            }
        }
public MainPageMVVM()
        {

            BaseObservable basep = new BaseObservable();
            basep.Nome = "Nome 1";
            basep.Id = 1;
            H.Add(basep);
            basep = new BaseObservable();
            basep.Nome = "Branco";
            basep.Id = 2;
            H.Add(basep);
            basep = new BaseObservable();
            basep.Nome = "Nome 2";
            basep.Id = 1;
            H.Add(basep);

        }

        public void Altera1()
        {
            H.Clear(); BaseObservable basep = new BaseObservable();
            basep.Nome = "Alterado Nome 1"; basep.Id = 1;
            H.Add(basep);
            basep = new BaseObservable();
            basep.Nome = "Branco"; basep.Id = 2;
            H.Add(basep);
            basep = new BaseObservable();
            basep.Nome = "Nome 2"; basep.Id = 1;
            H.Add(basep);
        }

Alguém pode me ajudar? Grato

1 resposta
solução!

Já Resolvido