Articles in this section
Category / Section

How to retain groups after updating the ItemsSource in Xamarin.Forms ListView using MVVM

1 min read

The Xamarin.Forms SfListView allows you to maintain groups after refreshing the ItemsSource with MVVM.

C#

Define the DataSource property in the ViewModel class. The GroupDescriptors can be added to the ViewModel DataSource property.

public class ContactsViewModel : INotifyPropertyChanged
{
    public DataSource ListDataSource { get; set; }
 
    public ObservableCollection<Contacts> ContactsInfo
    {
        get { return contactsInfo; }
        set { contactsInfo = value; this.OnPropertyChanged("ContactsInfo"); }
    }
 
    public ContactsViewModel()
    {
        ListDataSource = new DataSource();
        ListDataSource.GroupDescriptors.Add(new GroupDescriptor() { PropertyName = "ContactType" });
 
        GenerateInfo();
    }
}

XAML

Bind the ViewModel DataSource to the SfListView.DataSource property.

<syncfusion:SfListView x:Name="listView" ItemSize="60" DataSource="{Binding ListDataSource}" ItemsSource="{Binding ContactsInfo}">
    <syncfusion:SfListView.ItemTemplate >
        <DataTemplate>
            ...
        </DataTemplate>
    </syncfusion:SfListView.ItemTemplate>
</syncfusion:SfListView>

C#

When the ItemsSource is changed, the DataSource.GroupDescriptors will be cleared by default. However, you can maintain the grouping by adding the GroupDescriptor while updating the ItemsSource.

public class ContactsViewModel : INotifyPropertyChanged
{
    public Command RefreshCommand { get; set; }
 
    public ContactsViewModel()
    {         
        RefreshCommand = new Command(RefreshItemsSource);
    }
 
    private void RefreshItemsSource(object obj)
    {
        if(ContactsInfo.Count > 0)
        {
            ContactsInfo.Clear();
            ContactsInfo = null;
        }
 
        GenerateInfo();
        ListDataSource.GroupDescriptors.Add(new GroupDescriptor() { PropertyName = "ContactType" });
    }
}

View sample in GitHub

How to maintain group after refreshing the ItemsSource using MVVM in Xamarin.Forms SfListView?

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments
Please  to leave a comment
Access denied
Access denied