'Show CollectionView Grouping not working in Xamarin

I have an article here about showing Data Groups from Preferences . As per everyone's input I switched to CollectionView. I have consulted the article https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/grouping. This is what I have:

public class CartUser
{       
    public int IDProduct { get; set; }
    public string NameProduct { get; set; } 
    public string SupplierID { get; set; }
}

SupplierIDGrouping.cs

public class SupplierIDGrouping : ObservableCollection<CartUser>
{
    public string SupplierID { get; private set; }

    public SupplierIDGrouping(string supplierID)
    : base()
    {
        SupplierID = supplierID;
    }

    public SupplierIDGrouping(string supplierID, IEnumerable<CartUser> source)
        : base(source)
    {
        SupplierID = supplierID;
    }

}

PageOne.xaml

<CollectionView ItemsSource="{Binding SupplierList}" IsGrouped="true">
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Label Text="{Binding NameProduct}"/>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

PageOne.xaml.cs

public ObservableCollection<SupplierIDGrouping> SupplierList { get; private set; } = new ObservableCollection<SupplierIDGrouping>();

List<CartUser> cartUsers = new List<CartUser>();
var mycart = Preferences.Get("CartUserAdds", "_mycart");
var getcart = JsonConvert.DeserializeObject<List<CartUser>>(mycart);
cartUsers = getcart;

foreach (var item in cartUsers)
{
    if (!SupplierList.Any(supplierid => supplierid.SupplierID == item.SupplierID))
    {
        SupplierList.Add(new SupplierIDGrouping(item.SupplierID));
    }

    SupplierList.Single(supplierid => supplierid.SupplierID== item.SupplierID).Add(item);
}

BindingContext = this;

The data I am taken from Preferences:

[{\"IDProduct\":1,\"NameProduct\":\"Name product 1\",\"SupplierID\":\"22379356\"},{\"IDProduct\":2,\"NameProduct\":\"Name product 2\",\"SupplierID\":\"22379356\"},{\"IDProduct\":3,\"NameProduct\":\"Name product 3\",\"SupplierID\":\"12336544\"}]

However my results are still not grouped by SupplierID

enter image description here

This is what I want:

enter image description here

Looking forward to everyone's help. Thank you very much!

Update

Data corresponds to 2 groups. Group 1: 2 products, group 2: 1 product

foreach (var item in cartUsers)
{
    if (!SupplierList.Any(supplierid => supplierid.SupplierID == item.SupplierID))
    {
        SupplierList.Add(new SupplierIDGrouping(item.SupplierID));
    }

    SupplierList.Single(supplierid => supplierid.SupplierID== item.SupplierID).Add(item);
}

var getresult = SupplierList;
foreach(var i in getresult)
{

}

BindingContext = this;

enter image description here

Update 2

public class SupplierIDGrouping : ObservableCollection<CartUser>
{
    public string SupplierID { get; private set; }
    public string Name { get { return SupplierID; } }

    public SupplierIDGrouping(string supplierID)
    : base()
    {
        SupplierID = supplierID;
    }

    public SupplierIDGrouping(string supplierID, IEnumerable<CartUser> source)
        : base(source)
    {
        SupplierID = supplierID;
    }    
}

PageOne.xaml

<CollectionView ItemsSource="{Binding SupplierList}" IsGrouped="true" Header="{Binding Name}">
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Label Text="{Binding NameProduct}"/>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>


Solution 1:[1]

I had to provide a GroupHeaderTemplate to make it work. Not sure why - according to the docs it should not be necessary

    <CollectionView.GroupHeaderTemplate>
        <DataTemplate>
            <Label Text="{Binding SupplierID}"
               BackgroundColor="LightGray"
               FontSize="Large"
               FontAttributes="Bold" />
        </DataTemplate>
    </CollectionView.GroupHeaderTemplate>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Jason