C# WPF MVVM模式下ObservableCollection变更后Datagrid不更新求助
问题根源
核心问题为集合属性本身缺少属性变更通知:
ObservableCollection<T>自带的变更通知仅覆盖集合内部元素的新增、删除、修改操作,当你直接给mGießformenFinal属性赋值全新的ObservableCollection<ModularMold>实例时,属于属性引用变更,需要触发INotifyPropertyChanged的PropertyChanged事件通知UI,你当前使用的自动属性未实现该逻辑。- 构造函数中调用方法可正常显示,是因为赋值操作发生在UI绑定DataContext之前,初始化绑定时直接读取到了已填充的集合实例,不需要后续变更通知。
解决方案
方案1:修改集合属性实现,触发属性变更通知
你的ViewModel继承自ObservableObject,可直接调用基类的SetProperty方法自动处理属性变更通知,修改属性定义如下:
private ObservableCollection<ModularMold> _mGießformenFinal = new ObservableCollection<ModularMold>(); public ObservableCollection<ModularMold> mGießformenFinal { get => _mGießformenFinal; set => SetProperty(ref _mGießformenFinal, value); }
修改完成后,直接给属性赋新集合实例的原有逻辑即可正常触发UI更新。
方案2:复用原有集合实例,避免重新赋值
无需修改属性定义,直接清空原有集合后添加新数据,利用ObservableCollection自带的集合变更通知触发UI更新:
public void findCombinations() { CombinationJob cj = new CombinationJob(productId); cj.FiltereDiscDB(); var newData = cj.KombiniereMGießformen(); // 清空原有集合 mGießformenFinal.Clear(); // 把新数据添加到现有集合中 foreach (var item in newData) { mGießformenFinal.Add(item); } }
内容的提问来源于stack exchange,提问作者Murre97
相关产品推荐
相关产品推荐

