В приложении на 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
}
}
В итоге я в дебаге вижу, что данные с сервера приходят, но страница при этом всегда пустая. Что я делаю не так?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ковыряя ASPNET проект я задумался, а как за кулисами реализуются интернет-потоки
Как можно создать ассоциативный массив в c#? В других языках например как js и php это делается легко, но в С# так не работает
Похожий вопрос уже был но там немного другой код, а я немного разобрался в своем коде и боюсь его сломать