我正在使用Job
我定义的类的可观察集合。我已经绑定了一个方法来处理INotifyCollectionChanged
事件。MSDN 告诉我这INotifyCollectionChanged
是一个“动态更改的侦听器,例如添加和删除项目或刷新整个列表时”,但我想侦听集合中任何作业类的属性更改,是有一个事件处理程序?我知道有一个INotifyPropertyChanged
界面,但我希望它适用于集合。
编辑:
老实说,我对此感到困惑,所以我应该为我正在做的事情提供更多背景信息,以便我得到答案。我在“工作”类中有这个属性:
public Boolean IsPlanned
{
get
{
return this.Storage<Job>().isPlanned;
}
set
{
var storage = this.Storage<Job>();
if (storage.isPlanned != value)
{
storage.isPlanned = value;
this.OnPropertyChanged(() => this.isPlanned);
MessageBox.Show("IsPlanned property was changed on one of the jobs " + this.Subject);
}
}
}
这个作业类实际上继承自 Telerik 控件的约会类(恰好实现了 INotifyPropertyChanged)。从 Telerik 文档中,我也得到了上面的代码(减去消息框)。现在,当我更改此布尔值 ONCE 时,该消息框行被执行了 5 次。
任何帮助表示赞赏!
编辑 2: IsPlanned 的路径已更改:
PresentationManager.Instance.AllJobs.Single(o => o.JobGuid.Equals(((Job)state.DraggedAppointments.First()).JobGuid)).IsPlanned = true;
PresentationManager.Instance.AllJobs.Single(o => o.JobGuid.Equals(((Job)payload.DraggedAppointments.First()).JobGuid)).IsPlanned = false;
这些都来自不同的类,这些类用于为我的自定义拖放行为(来自列表框)定义覆盖。