I am using List view Grouping in Xamarin forms, but some how data is not binding. I am using Xamarin Forms 3.1 latest version. My code is :
<ListView ItemsSource="{Binding FacilityList}"
IsGroupingEnabled="true" HasUnevenRows="True" ItemTapped="OnItemTapped">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Heading}" TextColor="Black" FontSize="Medium" />
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout>
<Image Source="{Binding ImageName}" HeightRequest="50" WidthRequest="50"/>
<Label Text="{Binding Name}" TextColor="Black" FontSize="Medium"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
And my view model is
private ObservableCollection<FacilitiesGroup> facilityList;
public ObservableCollection<FacilitiesGroup> FacilityList
{
get => facilityList;
set => SetProperty(ref facilityList, value);
}
private Facility selectedItem;
public Facility SelectedItem
{
get => selectedItem;
set
{
SetProperty(ref selectedItem, value);
}
}
public ICommand ItemTappedCommand { get; set; }
public FacilityViewModel()
{
FacilityDataStore facilityDataStore = new FacilityDataStore();
var items = facilityDataStore.GetList();
var groupList = new List<FacilitiesGroup>();
var group = new FacilitiesGroup()
{
Facilities = items.Where(x => x.IsSubscribed == true).ToList(),
Heading = "Subscribed"
};
var group2 = new FacilitiesGroup()
{
Facilities = items.Where(x => x.IsSubscribed == false).ToList(),
Heading = "Unsubscribed"
};
groupList.Add(group);
groupList.Add(group2);
FacilityList = new ObservableCollection<FacilitiesGroup>(groupList);
}
FacilityGroup Class code is :
public class FacilitiesGroup
{
public List<Facility> Facilities { get; set; }
public string Heading { get; set; }
}
And Facility class is :
public class Facility
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
public bool IsSubscribed { get; set; }
public string ImageName { get; set; }
}
I am binding data like :
public MainPage()
{
InitializeComponent();
BindingContext = new FacilityViewModel();
}
I don't understand what is wrong with my code. Any help will be appreciated. Thanks.