0

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

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

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

这是我最初拥有的代码:

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

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

4

1 回答 1

0

ObservableCollection<>在添加或删除项目时发布CollectionChanged,但当集合中的项目更改时不会这样做。

为了解决这个问题,您可以订阅CollectionChanged事件,然后订阅处理程序INotifyPropertyChanged中添加的元素CollectionChanged

elementCollection.CollectionChanged += (s, a) =>
{
    foreach (Element element in a.NewItems)
        element.PropertyChanged += ElementChanged;
};

然后您可以在方法中更新 UI ElementChanged

于 2012-06-11T18:11:11.917 回答