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

Xamarin Forms:移除ObservableCollection分组子项后UI不更新的问题

问题原因与解决方案

问题根源

你的CalendarGroupModel继承自普通的List<CalendarModel>,而List<T>并未实现INotifyCollectionChanged接口。UI绑定依赖这个接口来感知集合内部元素的增删改操作,因此删除子项时UI无法收到更新通知;而根集合ObservableCollection<CalendarGroupModel>因为实现了该接口,所以删除分组项时UI能正常响应。

解决方案

将CalendarGroupModel的基类替换为ObservableCollection<CalendarModel>,这样子集合的元素变更会自动触发UI更新。

修改后的CalendarGroupModel代码:

public class CalendarGroupModel : ObservableCollection<CalendarModel>
{
    public string Name { get; private set; }
    public string DateLabel { get; set; }
    public double CompletePercentage { get; set; }
    public string CompleteLabel { get; set; }

    public CalendarGroupModel(string name, List<CalendarModel> calendarEntries) : base(calendarEntries)
    {
        Name = name;
    }
}

优化子项移除代码(避免枚举时修改集合的异常):

foreach (var group in CalendarGroupModels)
{
    var targetItem = group.FirstOrDefault(a => a.CalendarID == calendarTable.CalendarID);
    if (targetItem != null)
    {
        group.Remove(targetItem);
        break;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:13:11