Я столкнулся с любопытной проблемой: метод 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
, но я думаю, что это неправильный костыль