具有子属性的依赖属性更新主属性?
我试图想出了以下问题的解决方案:具有子属性的依赖属性更新主属性?
我有一个包含3个属性一个DateTimeRange类:
- 开始:日期时间
- 结束:日期时间
- 长度:长度(=结束开始)
该类在整个项目中用作各种控件的依赖项属性。这个值是可变的,例如,如果开始改变,结束将被移动相同的偏移量(保持相同的长度)。
我的问题是,在侦听范围更新的代码中,只有在更换完整对象时,才会收到任何属性发生更改的事件。
我想让DateTimeRange类在更改属性时通知用户整个对象已更改,而不仅仅是一个属性。
我试图让DateTimeRange成为一个不可变的结构体。但是这使得DataBinding对其任何属性都有两种不可能的方式。
有没有人有建议如何做到这一点?国际海事组织这个问题是非常令人沮丧的,因为相同的问题发生在边缘例如(你不能绑定到Margin.Left的控制)。
该框架并不真的支持这个要求。我会采取的做法是使DateTimeRange
实施INotifyPropertyChanged
,引发事件,只要其任何属性发生变化。对于具有DateTimeRange
作为依赖项属性的类,在属性更改时为INotifyPropertyChanged
添加/删除处理程序。在您的处理程序中,您可以执行所需的操作。
请注意,您可以使DateTimeRange
a DependencyObject
,这将允许您创建其属性的双向绑定。
你可以请澄清这一点:在一个具有DateTimeRange作为依赖项属性的类添加/删除处理程序为INotifyPropertyChanged属性更改。谢谢! – thumbmunkeys 2011-12-21 12:54:37
这需要使用此控制的更多工作。不是我想要的,然后我需要为同一个属性更改两个侦听器。 (一个倾听财产的变化,一个倾听该财产的变化) – Abstractor 2011-12-21 13:14:48
你使用SL还是WPF? – 2011-12-21 10:09:29
@Dmitry:标签说WPF ... – 2011-12-21 10:16:31