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());
,则会发生绑定。
答案 0 :(得分:2)
您需要在对象INotifyPropertyChanged
中实现,因为ObservableCollection
只会通知集合更改,而不会通知对象更改。
如果您正在使用WPF,则可以从DependencyObject派生MyObject
。完成后,您可以将您的属性声明为DependencyProperties(VisulStudio有一个很好的Snippet),这会自动通知。如果您正在创建ViewModel,那么无论如何这都是有意义的。
答案 1 :(得分:2)
在第一行中,MyProperty存在于集合MyObjects中的第一个对象上,而不存在于集合本身上。因此,如果您希望WPF侦听MyObject实例的该属性的更改,则MyObject类需要实现INotifyPropertyChanged。