在绑定元素上调用属性已更改

时间:2011-09-28 11:22:06

标签: wpf mvvm inotifypropertychanged

我的视图模型为我的视图提供的属性实现了INotifyPropertyChanged。它提供了一组未实现INotifyPropertyChanged的对象。

我的集合绑定到我视图中的ItemControl,其中ItemTemplate用于显示每个项目。项模板绑定到我的集合成员的Name属性。

如何在我的收藏成员的属性发生变化时告诉我的观点更新?

2 个答案:

答案 0 :(得分:1)

您必须为集合成员实现INotifyPropertyChanged。或者您可以在ViewModel中重置您的收藏:

public void Reset() {
    List<TestData> temp = YourCollection;
    YourCollection = null;
    YourCollection = temp;
}

答案 1 :(得分:1)

您需要为集合中的对象实现INotifyPropertyChanged(推荐方法),或者您可以通过类似

的方式手动刷新绑定
myItemsControl.GetBindingExpression(
     ItemsControl.ItemsSourceProperty).UpdateTarget();

如果您在ViewModel中,您可以在Collection类上引发PropertyChanged事件,如下所示,但我不确定是否会更新单个项目

// My PropertyChanged method is usually called RaisePropertyChanged
RaisePropertyChanged("MyCollection");  

您也可以执行Mirimon建议的操作并将值设置为null然后再返回,尽管如果可能的话,我会建议采用不同的方法。