【发布时间】:2012-09-20 21:59:50
【问题描述】:
我需要在 ObservableCollection 的所有者中处理 ObservableCollection 中项目的 PropertyChanged 事件。必须有比以下更优雅的方式:
ObservableCollection(MyViewModel) myViewModels = new ObservableCollection<MyViewModel>();
LoadMyViewModels(myViewModels); // populates the collection
foreach (MyViewModel myViewModel in myViewModels)
{
myViewModel.PropertyChanged += PropertyChangedEventHandler(MyViewModelPropertyChanged);
}
我想将 MyViewModelPropertyChanged 事件处理程序传递给 LoadMyViewModels,这样我就不必遍历集合两次(一次在加载时,一次在事件分配时)。
MyViewModelPropertyChanged 设置反映在 UI 上的包含视图的属性(集合绑定到 TreeView,我需要根据是否检查项目来启用/禁用 UI 中的字段)。
如果不是所有引用的帖子,我也看过最多,但我有点迷茫。
上面的代码完成了我需要它做的事情,但我知道有更好的方法。请引用适当的参考资料或代码示例。
谢谢。
【问题讨论】:
-
+1 我也一直这样做,对您在这里得到的任何回复感兴趣。
-
你能解释一下为什么你不想遍历集合两次吗?这只是一个冗余问题吗?
-
并不是真正的冗余问题,我只是想看看是否有更优雅的方式。以上工作正常。
标签: c# observablecollection propertychanged