ScrollTo не прокручивает - PullRequest
       5

ScrollTo не прокручивает

0 голосов
/ 07 апреля 2020

Я столкнулся с любопытной проблемой: метод ScrollTo не работает для ListView внутри root страницы, инициализированной внутри NavigationPage. Простой код:

public partial class MainPage : ContentPage
{
    ListView listView;

    public MainPage()
    {


        var abs = new AbsoluteLayout { };            


        var src = new List<string>();
        for (int i = 0; i < 30; i++) { src.Add(i + 1 + " line"); }


        abs.Children.Add(listView = new ListView { ItemsSource = src }, new Rectangle(0, 0, 1, 0.9), AbsoluteLayoutFlags.All);
        abs.Children.Add(new Entry { BackgroundColor = Color.Gray }, new Rectangle(0, 1, 1, 0.1), AbsoluteLayoutFlags.All);

        Content = abs;

    }

    protected override void OnAppearing()
    {
        base.OnAppearing();

        var last = (listView.ItemsSource as List<string>).Last();
        listView.ScrollTo(last, ScrollToPosition.End, false);

    }


}

Здесь я пытаюсь прокрутить до последнего элемента при загрузке MainPage. И это прекрасно работает, если я инициализировал приложение так:

    public App ()
    {
        InitializeComponent();            

        MainPage = new App1.MainPage { Title = "Main" };
    }

Но если я помещаю MainPage в NavigationPage, прокрутка не происходит:

    public App ()
    {
        InitializeComponent();            

        MainPage = new NavigationPage(new App1.MainPage { Title = "Main" });
    }

Какой правильный способ решить это?

PS: теперь я обгоняю этот момент через Device.StartTimer, но я думаю, что это неправильный костыль

...