I've written a very simple app to test the ScrollTo method of the CollectionView control. It just won't work no matter what I do. Would someone examine the code and tell me what I'm doing wrong?
I'm testing on an Android.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ScrollToTest.Views.MainPage"
Title="{Binding Title}">
<StackLayout>
<CollectionView x:Name="collectionView"
ItemsSource="{Binding TestModels}"
SelectionMode="Single">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout HeightRequest="50">
<Label Text="{Binding Name}" FontSize="20"/>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</StackLayout>
</ContentPage>
public partial class MainPage
{
public MainPage()
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
collectionView.ScrollTo(16);
//collectionView.ScrollTo(16, -1, ScrollToPosition.MakeVisible, false);
TestModel testModel = new TestModel() { Name = "Name 16" };
//collectionView.ScrollTo(testModel);
}
}
public class MainPageViewModel : ViewModelBase
{
public MainPageViewModel(INavigationService navigationService) : base(navigationService)
{
Title = "Main Page";
TestModels = _testModels;
}
public class TestModel
{
public string Name { get; set; }
}

private readonly List<TestModel> _testModels = new List<TestModel>()
{
new TestModel() { Name = "Name 1" },
new TestModel() { Name = "Name 2" },
new TestModel() { Name = "Name 3" },
new TestModel() { Name = "Name 4" },
new TestModel() { Name = "Name 5" },
new TestModel() { Name = "Name 6" },
new TestModel() { Name = "Name 7" },
new TestModel() { Name = "Name 8" },
new TestModel() { Name = "Name 9" },
new TestModel() { Name = "Name 10" },
new TestModel() { Name = "Name 11" },
new TestModel() { Name = "Name 12" },
new TestModel() { Name = "Name 13" },
new TestModel() { Name = "Name 14" },
new TestModel() { Name = "Name 15" },
new TestModel() { Name = "Name 16" },
new TestModel() { Name = "Name 17" },
new TestModel() { Name = "Name 18" },
new TestModel() { Name = "Name 19" }
};
public List<TestModel> TestModels { get; set; }
}