https://docs.microsoft.com/zh-cn/learn/modules/display-collections-in-xamarin-forms-apps-with-listview/4-dynamically-add-and-remove-listview-items
大多数现代应用程序显示的内容会随着时间变化。 例如,流行的社交媒体应用程序,如 Facebook、Twitter 和 Instagram。 此类应用程序向其用户显示内容列表。 如果用户上传了新照片,则该照片会添加到列表中供所有人查看。 在本单元中,我们将了解如何动态添加和删除 Xamarin.Forms ListView 中的项。
动态修改 ListView 控件
若要动态添加和删除 Xamarin.Forms ListView 控件中的元素,我们需要修改分配给 ItemsSource 属性的数据集合。
以下代码提供了我们正在讨论的一些操作类型示例。 假设 ItemsSource 控件的 ListView 属性设置为 Cookbook.Recipes,第一行添加新项,第二行删除项,第三行替换项。
Cookbook.Recipes.Add(new Recipe { Name = "Mac n Cheese" });
Cookbook.Recipes.RemoveAt(0);
Cookbook.Recipes[0] = new Recipe { Name = "Golden Heaven Food" }
我们在此处仅讨论添加、删除和替换集合的记录。 我们不会修改集合中已有项的内容。 我们将在本模块的后面部分了解如何做到这一点。
使用 ObservableCollection 类型
前面的代码可能会或可能无法正确工作。 这取决于 Recipes 类型的实现方式。 问题在于 ListView 控件需要在 ItemsSource 集合发生更改时得到通知。
我们需要使用实现 INotifyCollectionChanged 接口的集合。 此接口有一个名为 CollectionChanged 的事件,只要集合更改,就会引发该事件。 ListView 知道此接口,并将自动订阅 CollectionChanged 事件。
标准库包含实现 INotifyCollectionChanged 的 ObservableCollection 类型。 只要我们将这个集合用于数据,当我们更改集合的内容时,ListView 控件就会立即更新。
此代码示例显示了如何使用 ObservableCollection:
public static class Cookbook
{
public static ObservableCollection<Recipe> Recipes { get; private set; }
static Cookbook()
{
Recipes = new ObservableCollection<Recipe>();
}
}

本文介绍如何在Xamarin.Forms应用中动态地添加、删除和替换ListView中的项。通过使用ObservableCollection并结合INotifyCollectionChanged接口,确保ListView能即时响应数据集合的变化。
1191

被折叠的 条评论
为什么被折叠?



