WPF的MVVM中使用ObservableCollection无法更新listview中的数据怎么回事?急
发布网友
发布时间:2022-04-23 12:50
我来回答
共1个回答
热心网友
时间:2023-10-14 05:09
由于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的成员的变化绑定到整个对象的变化上面。
热心网友
时间:2023-10-14 05:09
由于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的成员的变化绑定到整个对象的变化上面。