I've started looking at .NET Maui recently and ran into an issue almost immediately when putting together a test app. I wanted to add items into a ScrollView
and then scroll to the bottom when that occurs.
What I found was, if I called ScrollToAsync
once it didn't work. If I called ScrollToAsync
twice it wouldn't scroll but then when I manually scrolled with the mouse it would THEN scroll to the end.
Here is a ScrollView
extension method that will allow you to scroll a specified View/Control into view.
/// <summary>
/// Scrolls to the specified <see cref="View"/>.
/// </summary>
/// <param name="scrollView"></param>
/// <param name="ctrl"></param>
/// <param name="animate"></param>
public static void ScrollTo(this ScrollView scrollView, View ctrl, bool animate = false)
{
var timer = new Timer((object obj) => {
MainThread.BeginInvokeOnMainThread(() => scrollView.ScrollToAsync(ctrl, ScrollToPosition.End, true));
}, null, 1, Timeout.Infinite);
}