#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 Рад, что решил это! Не забудьте поделиться им в ответе, когда у вас будет время.