Вы можете сделать это, добавляя элементы в асинхронный метод или другой поток.Загрузка данных в фокусе представления просто переносит проблему в другое место, и это вообще плохо работает с пользователем.
Если вы, например, запустите блок кода внутри Task.Run()
, этот код будетвыполняется в другом потоке, и интерфейс не должен зависать при загрузке данных.
Примерно так:
public class MyPage : ContentPage
{
List<object> itmSrc;
Picker picker;
public MyPage()
{
// Your stuff goes here
itmSrc = new List<object>();
picker = new Picker();
StackLayout content = new StackLayout();
content.Crindren.Add(picker);
this.Content = content;
Task.Run(() => LoadData());
}
private void LoadData()
{
// Get your data from anywhere and put it on the itemSrc from here.
// Then...
picker.ItemsSource = itmSrc;
}
}
Надеюсь, это поможет.