1

据我所知,您没有可以订阅依赖属性的“PreviewPropertyChanged”,但我需要知道一个值会发生变化。我的想法是重新调整 Coerce Value 方法的用途并在那里进行检查(自然是在发生任何实际强制之后,因为在实际更改发生之前调用它是有意义的。这样我可以检查现有值与强制值以确定更改,如果有,则触发我的预览代码。这是正确的方法还是我错过了什么?

4

1 回答 1

1

你说对了。CoerceValueCallback 是引发“XXXChanging”事件的好方法,它为对象的消费者提供更改以更改值或取消更改。然后,您的强制将返回新值或修改后的值。您可以直接从 DependencyObject 获取旧值,因为它不包含在 CoerceValueCallback 参数中。

附带说明一下,“预览”事件是隧道事件。这意味着它们从树的顶部向下移动。冒泡事件自下而上进行。所以我会避免称它为 PreviewPropertyChanged,因为这意味着该属性已经更改并且它是一个隧道事件。

于 2011-04-15T16:31:14.800 回答