Мой комментарий "Почему бы не использовать ListView с группировкой, которая имеет эту встроенную функциональность?"отчасти правильно.
Использование ListView с группировкой автоматически обеспечит функциональность «Sticky Header» на iOS, но не на Android.
Так что для iOS будет работать следующий код:
public class ToysList : List<Toy>
{
public string Header { get; set; }
public List<Toy> Toys => this;
}
public class Toy
{
public string Name { get; set; }
}
// Initialise Toys in your ViewModel
<ListView
ItemsSource="{Binding Toys}"
IsGroupingEnabled="true">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Header}" />
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding Name}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Для Android вам нужно создать пользовательский рендер, к счастью, на github есть хороший пример .