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

WPF DataGrid能否更新行并重新显示?添加元素异常咨询

解决WPF DataGrid绑定集合后新增元素不显示的问题

这问题我之前开发WPF项目时也踩过坑!核心原因很直白:你用的List<Action>没办法主动通知UI层集合发生了变化。DataGrid在初始绑定的时候会读取集合的当前内容,但之后往List里新增、删除元素,它完全感知不到这些变化,自然不会更新显示。

直接解决方案:换成ObservableCollection<T>

ObservableCollection<T>是WPF专门为数据绑定设计的集合类型,它实现了INotifyCollectionChanged接口——当集合里的元素新增、移除或者排序变动时,会自动触发事件通知UI刷新。

修改你的代码只需两步:

  1. 先引入对应的命名空间:
    using System.Collections.ObjectModel;
    
  2. 把原来的List<Action>替换成ObservableCollection<Action>:
    public partial class MainWindow : Window 
    { 
        public DateTime start; 
        public DateTime end; 
        // 替换为支持变更通知的ObservableCollection
        public ObservableCollection<Action> zadania = new ObservableCollection<Action>(); 
    
        public MainWindow() 
        { 
            InitializeComponent(); 
            var urlop = new Action(); 
            // 初始化添加元素的逻辑保持不变
            zadania.Add(urlop);
            // ...其他初始化代码
        } 
    
        // 后续添加元素的方法里,直接调用Add即可自动更新UI
        private void AddNewAction()
        {
            var newAction = new Action();
            zadania.Add(newAction);
            // 这时候DataGrid会自动显示新添加的元素
        }
    }
    

额外小提醒

如果之后你需要让DataGrid自动同步Action对象内部属性的变化(比如修改某个属性后UI跟着刷新),那你的Action类还需要实现INotifyPropertyChanged接口——不过这是属性变更通知的场景,和你当前遇到的集合新增元素不显示问题是两回事啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:56:02