我的ViewModel中有一个带有INotifyPropertyChanged
的ObservableCollection,比如A.现在我将循环浏览A来更新一些元素。
public ObservableCollection<ClassA> A
{
get
{
if (this.a== null)
{
this.a= new ObservableCollection<ClassA>();
}
return this.a;
}
set
{
this.a= value;
this.OnPropertyChanged("A");// implement PropertyChangedEvent
}
}
在循环中我更新了值。
foreach (var item in MyViewModel.A)
{
if(condition)
MyViewModel.A.Type= "CASH";
else
MyViewModel.A.Type= "CHECK";
}
但是我看到没有达到setter部分。所以集合没有更新。
答案 0 :(得分:4)
看起来您正在尝试更新ObservableCollection<ClassA>
中的元素,而不是将集合设置为新值。如果您希望在调用MyViewModel.A.Type = "CASH"
时进行房产更改,则ClassA
需要实施INotifyPropertyChanged
。
(编辑:对于其他人看到这一点,请检查此question/answer - 我无法将此标记为可能重复。您需要监视集合中元素的属性更改,然后触发属性更改在您的ObservableCollection
手动。容器不会为您执行此操作。)
答案 1 :(得分:0)
我使用自己的方法。通过使用通用列表从Observable Collection中检索所有项目。然后将通用列表转换为Observable Collection。
这不是最好的方法,但到目前为止它已经解决了。