动态添加和删除 ListView 项

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

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>();
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值