Xamarin Forms: добавить ItemSource в фокус - PullRequest
0 голосов
/ 14 мая 2018

Пытаюсь загрузить ItemSource сборщика, когда сборщик сфокусирован.Но данные не загружаются в 1-й фокус.

вот пример кода

List<object> itmSrc;

Picker picker = new Picker();
itmSrc = Controls[i].ItemSource;
picker.Focused += BindItemSourceOnFocus;

public void BindItemSourceOnFocus(object sender, FocusEventArgs e)
{
    var p = e.VisualElement as Picker;
    p.ItemsSource = itmSrc;
}

Если возможен любой другой подход, дайте мне знать.

1 Ответ

0 голосов
/ 16 мая 2018

Вы можете сделать это, добавляя элементы в асинхронный метод или другой поток.Загрузка данных в фокусе представления просто переносит проблему в другое место, и это вообще плохо работает с пользователем.

Если вы, например, запустите блок кода внутри 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;
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...