Xamarin MVMM ListView не является обязательным

#c# #xamarin #xamarin.forms #xamarin.ios

#c# #xamarin #xamarin.forms #xamarin.ios

Вопрос:

Я пытаюсь загрузить простую коллекцию элементов в ListView в моем приложении Xamarin Forms. ListView определен в .xaml с привязкой к Items . ViewModel использует команду, LoadItems которая должна обновлять содержимое списка при OnPropertyChanged вызове.

Я не могу понять, где это происходит неправильно?

Debug.WriteLine() Вызывается, поэтому я знаю, что команда запущена

Спасибо,

Страница списка.xaml

   <ListView  x:Name="MyList"  ItemsSource="{Binding Items}">
                     <ListView.ItemTemplate>
                           <DataTemplate>           
                                   <StackLayout Padding="10">
                                        <Label Text="{Binding Text}" LineBreakMode="NoWrap" />
                                    </StackLayout>
                            </DataTemplate>
                        </ListView.ItemTemplate>
  </ListView>
  

Страница списка.cs

 public ListPageViewModel()
        {
            Title = "List Page";

            Task.Run(async () => await LoadItems());
        
        }

public ObservableCollection<Item> Items = new ObservableCollection<Item>();

public async Task LoadItems()
        {
           Debug.WriteLine("commanded to load items");
            var items = new ObservableCollection<Item>(); 
    
            items = new ObservableCollection<Item>()
            {
                new Item { Id = Guid.NewGuid().ToString(), Text = "Second item", Description="This is an item description." },
                new Item { Id = Guid.NewGuid().ToString(), Text = "First item", Description="This is an item description." }

            };

            Items = items;   

            OnPropertyChanged(nameof(Items)); 

                
        }
  

Item.cs

   public class Item
    {
        public string Id { get; set; }
        public string Text { get; set; }
        public string Description { get; set; }
    }
  

Комментарии:

1. Items должно быть общедоступным свойством

2. Как сказал Джейсон, public ObservableCollection<Item> Items { get; set; } . Или просто создайте новый проект с шаблоном, вы найдете трюк.

3. Привет, ты решил это?

4. Джейсон и Шоу, вы были правы public ObservableCollection<Item> Items { get; set; } , решили это. Спасибо

5. @user1202278 Рад, что решил это! Не забудьте поделиться им в ответе, когда у вас будет время.