Hi! Thanks for reading this.
I'm try to use MVVM for change some values over listview's items. I update Model but no changes on View.
This is my Listview definition :
My code behind :
void Handle_ItemSelected(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
{
if (OldItem != null)
OldItem.IsSelected = false;
OldItem = ((Provider)e.SelectedItem);
}
This is used for going back IsSelected property when item is not selected anymore.
My view model:
public class AllProvidersViewModel : ContentPage, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
ObservableCollection<Group> _proveedores = new ObservableCollection<Group>();
public ObservableCollection<Group> Proveedores
{
get { return _proveedores; }
}
private Provider _selItem;
public Provider SelItem
{
get { return _selItem; }
set
{
if (value != null)
{
_selItem = value;
_selItem.IsSelected = true;
_selItem.Level = 1; //Only for test!
_selItem.RazonSocial = "I've changed!"; // It never changes on view.
OnPropertyChanged("SelItem");
}
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Model:
public class Group : ObservableCollection
{
public string Initial { get; set; }
public Group(string initial)
{
Initial = initial;
}
}
public class Provider {
public bool IsSelected {get; set;}
public Level {get; set;}
public RazonSocial {get; set}
}
Some code was removed intentionally-
So, There is not problem for populate the listview. All data is in it.
When I select an item, set method on SelItem is called. It change IsSelected, Level and RazonSocial in the model, but view doesn't change.
If I select another item, and then select previous item again, _selItem keep changes, but the view never show that changes.
Any Clue?
Thanks!
Gaston