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

MAUI中如何刷新基于动态列表生成的XAML视图?

解决MAUI CollectionView添加新项后不刷新的问题

核心原因

你当前使用的company.tasks应该是普通的List<Task>,它没有实现INotifyCollectionChanged接口。当你向列表添加新项时,CollectionView无法感知到集合的变化;而重新赋值同一个List实例,CollectionView会认为数据源没有改变,所以不会刷新视图。

推荐解决方案:改用ObservableCollection

MAUI中专门设计了ObservableCollection<T>用于动态集合,它会在集合元素添加、删除或修改时自动通知视图更新,是处理动态列表的标准做法:

  1. 修改company类中tasks的类型:
public ObservableCollection<Task> tasks { get; set; } = new ObservableCollection<Task>();
  1. 初始化时绑定一次数据源即可:
taskList.ItemsSource = company.tasks;
  1. 后续添加新任务时,直接操作这个集合,视图会自动刷新:
company.tasks.Add(new Task { /* 初始化任务属性 */ });

临时解决方案:手动强制刷新视图

如果因为某些原因无法改用ObservableCollection,可以通过重新设置ItemsSource为新的集合实例来强制CollectionView刷新:

方法1:先清空再重新赋值

taskList.ItemsSource = null;
taskList.ItemsSource = company.tasks;

方法2:创建集合的新实例

taskList.ItemsSource = new List<Task>(company.tasks);

这样CollectionView会检测到数据源引用的变化,从而重新生成所有列表项。

注意:这种方法会重新渲染整个列表,性能上不如ObservableCollection高效,适合临时场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:25:35