我正在尝试为以下问题提出解决方案:
我有一个DateTimeRange类,它包含3个属性:
这个类在我的整个项目中用作各种控件的依赖属性。这个值是可变的,例如,如果Start更改,End将以相同的偏移量移动(保持相同的长度)。
我的问题是,在侦听范围更新的代码中,只有在更换完整对象时,才会在任何属性发生更改时收到事件。
我想让DateTimeRange类在更改属性时通知用户整个对象已更改,而不仅仅是一个属性。
我试图让DateTimeRange成为一个不可变的结构。但是这使得DataBinding的任何一个属性都不可能。
有人建议怎么做吗? IMO这个问题非常令人沮丧,因为例如Margins会出现同样的问题(你无法绑定到控件的Margin.Left)。
答案 0 :(得分:2)
该框架并不真正支持此要求。我将采用的方法是DateTimeRange
实现INotifyPropertyChanged
,只要其任何属性发生变化就会引发事件。在具有DateTimeRange
作为依赖项属性的类上,在属性更改时为INotifyPropertyChanged
添加/删除处理程序。在此事件的处理程序中,您可以执行所需的操作。
注意,您可以将DateTimeRange
设为DependencyObject
,这样您就可以创建与其属性的双向绑定。