Привязка данных в Xamarin.Forms

95
03 марта 2022, 02:00

В приложении на Xamarin.Forms необходимо сначала получить данные с сервера, а потом используя их нарисовать FlexLayout. Я пытаюсь сделать это так:

public class ItemsViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    public ObservableCollection<Item> Items { get
        {
            return _items;
        }
        set
        {
            _items = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Items"));
        }
    }
    private ObservableCollection<Item> _items;
    public Command LoadItemsCommand { get; set; }
    public ItemsViewModel()
    {
        Items = new ObservableCollection<Item>();
        LoadItemsCommand = new Command(async () => await LoadItems());
    }
    async Task LoadItems()
    {
        //тут загрузка с сервера
    }

Код страницы примерно такой:

public partial class MainPage : ContentPage
{
    ItemsViewModel viewModel;
    public MainPage()
    {
        InitializeComponent();
        BindingContext = viewModel = new ItemsViewModel();
    }
    protected override void OnAppearing()
    {
        base.OnAppearing();
        if (!viewModel.Items.Any())
        {
            viewModel.LoadItemsCommand.Execute(null);
        }
        this.Content = CreateFlexLayout(viewModel.Items);
    }
    private static FlexLayout CreateFlexLayout(IEnumerable<Item> Items)
    {
        //генерация layout
    }
}

В итоге я в дебаге вижу, что данные с сервера приходят, но страница при этом всегда пустая. Что я делаю не так?

READ ALSO
Как &quot;за кулисами&quot; реализуется интернет-поток?

Как "за кулисами" реализуется интернет-поток?

Ковыряя ASPNET проект я задумался, а как за кулисами реализуются интернет-потоки

99
Как создать ассоциативный массив в C#?

Как создать ассоциативный массив в C#?

Как можно создать ассоциативный массив в c#? В других языках например как js и php это делается легко, но в С# так не работает

97
AngleSharp Как подключить прокси?

AngleSharp Как подключить прокси?

Похожий вопрос уже был но там немного другой код, а я немного разобрался в своем коде и боюсь его сломать

100