WPF的MVVM中使用ObservableCollection无法更新listview中的数据怎么回事?急

2024-12-03 10:01:25
推荐回答(1个)
回答(1):

由于DisplayData是一个对象,是引用类型,也就是一个地址,除非你在后台设置DisplayData=null,再赋值为新对象,否则前台检测不到它的item有任何变化。

要实现DisplayData的各个属性变化通知前台,需要添加类似如下的代码,

        void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            if (e.NewItems != null && e.NewItems.Count != 0)
                foreach (PACViewModel pVM in e.NewItems)
                    pVM.PropertyChanged += this.OnPACViewModelPropertyChanged;

            if (e.OldItems != null && e.OldItems.Count != 0)
                foreach (PACViewModel pVM in e.OldItems)
                    pVM.PropertyChanged -= this.OnPACViewModelPropertyChanged;
        }

也就是说你要通过手工的代码实现DisplayData的成员的变化绑定到整个对象的变化上面。