ObservableCollection中的属性是否需要PropertyChangedEvent

时间:2010-08-05 19:52:59

标签: .net

Observable集合中对象的属性是否需要PropertyChangedEvent?例如:

public class MyObject
{
     public int MyProperty { get; set;}
}

public class MyViewModel
{
    ObservableCollection<MyObject> MyObjects = new ObservableCollection<MyObject>();
}

据我所知,如果我执行MyObjects[0].MyProperty = 1;,那么我的绑定就不会发生。但是,如果我调用MyObjects.Add(new MyObject());,则会发生绑定。

2 个答案:

答案 0 :(得分:2)

您需要在对象INotifyPropertyChanged中实现,因为ObservableCollection只会通知集合更改,而不会通知对象更改。

如果您正在使用WPF,则可以从DependencyObject派生MyObject。完成后,您可以将您的属性声明为DependencyProperties(VisulStudio有一个很好的Snippet),这会自动通知。如果您正在创建ViewModel,那么无论如何这都是有意义的。

答案 1 :(得分:2)

在第一行中,MyProperty存在于集合MyObjects中的第一个对象上,而不存在于集合本身上。因此,如果您希望WPF侦听MyObject实例的该属性的更改,则MyObject类需要实现INotifyPropertyChanged。