You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin:如何向CollectionView的现有分组中添加项

问题核心原因

你的ItemGroupModel继承自ObservableCollection<ItemModel>,构造时将传入的itemModels交给基类托管,但你没有意识到ItemGroupModel实例本身就具备集合的所有操作能力,因此不需要额外存储itemModels的引用即可完成新增项操作。

实现方案

方案1:直接调用实例的集合方法(无需修改现有代码)

因为ItemGroupModel本身就是ObservableCollection<ItemModel>的子类,你可以直接对分组实例调用Add方法添加新项,UI会自动响应变更:

// 找到需要新增项的目标分组
var targetGroup = MyGroup.FirstOrDefault(g => g.Name == "GroupX");
if (targetGroup != null)
{
    // 直接向分组添加新项
    targetGroup.Add(new ItemModel { Name = "新增项名称" });
}

方案2:显式暴露子集合属性(适合需要单独管理子集合的场景)

如果你需要明确持有子集合的引用,可以修改ItemGroupModel的定义,存储传入的itemModels为公共属性:

public ItemGroupModel(String name, ObservableCollection<ItemModel> itemModels):base(itemModels)
{
    this.Name = name;
    // 存储子集合引用
    this.Items = itemModels;
}
public String Name { get; set; }
// 新增公共子集合属性
public ObservableCollection<ItemModel> Items { get; private set; }

后续新增项的代码如下:

var targetGroup = MyGroup.FirstOrDefault(g => g.Name == "GroupX");
if (targetGroup != null)
{
    targetGroup.Items.Add(new ItemModel { Name = "新增项名称" });
}

注意事项

两种方案都依赖ObservableCollection自带的INotifyCollectionChanged通知机制,添加新项后CollectionView会自动刷新界面,不需要手动触发更新。

内容的提问来源于stack exchange,提问作者Karim Mohammad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:30:05