子属性的依赖属性是否更新了主属性?

时间:2011-12-21 09:51:14

标签: c# wpf

我正在尝试为以下问题提出解决方案:

我有一个DateTimeRange类,它包含3个属性:

  • 开始:DateTime
  • 结束:日期时间
  • 长度:长度(=终止开始)

这个类在我的整个项目中用作各种控件的依赖属性。这个值是可变的,例如,如果Start更改,End将以相同的偏移量移动(保持相同的长度)。

我的问题是,在侦听范围更新的代码中,只有在更换完整对象时,才会在任何属性发生更改时收到事件。

我想让DateTimeRange类在更改属性时通知用户整个对象已更改,而不仅仅是一个属性。

我试图让DateTimeRange成为一个不可变的结构。但是这使得DataBinding的任何一个属性都不可能。

有人建议怎么做吗? IMO这个问题非常令人沮丧,因为例如Margins会出现同样的问题(你无法绑定到控件的Margin.Left)。

1 个答案:

答案 0 :(得分:2)

该框架并不真正支持此要求。我将采用的方法是DateTimeRange实现INotifyPropertyChanged,只要其任何属性发生变化就会引发事件。在具有DateTimeRange作为依赖项属性的类上,在属性更改时为INotifyPropertyChanged添加/删除处理程序。在此事件的处理程序中,您可以执行所需的操作。

注意,您可以将DateTimeRange设为DependencyObject,这样您就可以创建与其属性的双向绑定。