Silverlight数据绑定到集合中的集合

时间:2012-06-11 16:20:37

标签: silverlight data-binding observablecollection inotifypropertychanged inotifycollectionchanged

希望有人可以帮我解决这个问题。我正在创建一个Silverlight应用程序,用于编辑图像。用户有一个项目,其中包含包含元素的图层。 (元素是文本和图像元素)。

我有一个代表项目的课程。它包含ObservableCollection<Layer>,每个图层都有ObservableCollection<Element>。元素是一个抽象类。有一个继承自Element的TextElement和ImageElement类。

我的问题是当我更改集合中的元素时,UI永远不会更新。我在我的所有属性上使用INotifyPropertyChanged,我正在收集CollectionChanged但仍然没有去。 ObservableCollection<Element>的CollectionChanged事件永远不会受到其元素之一更新的影响。

这是我原来的代码:

void Elements_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { this.NotifyChange("Elements"); }

如果有人可以提供帮助,我将非常感激。

1 个答案:

答案 0 :(得分:0)

添加或删除项目时,

ObservableCollection<>会发布CollectionChanged,但当集合中的项目发生更改时,它不会发布CollectionChanged

为了解决这个问题,您可以订阅INotifyPropertyChanged事件,然后订阅CollectionChanged处理程序中添加的elementCollection.CollectionChanged += (s, a) => { foreach (Element element in a.NewItems) element.PropertyChanged += ElementChanged; }; 个元素:

ElementChanged

然后,您可以在{{1}}方法中更新用户界面。