附加属性可以在INotifyPropertyChanged框架内工作吗?

Eri*_*c V 5 .net c# silverlight mvvm

首先,请原谅(并纠正!)任何误解 - 我对任何.NET都不擅长.

我和我的团队正在使用MVVM模式在Silverlight中构建应用程序.现在,我们是一个具有各种属性(例如其背景颜色)的对象的视图模型.VM实现INotifyPropertyChanged,以便在更新这些属性时通知侦听器.

问题是这些是画布上的拖放对象,我们希望每次更改画布上的位置时都运行一些逻辑.但是,我的理解是因为Canvas.Left和Canvas.Top是附加属性,所以我不能像处理对象的本机属性那样对待它们.

有没有办法让这些附加属性与INotifyPropertyChanged一起使用?如果不是,那么对Canvas.Left和Canvas.Top属性中的更改做出反应的最佳方法是什么.

非常感谢你!

Eri*_*ich 3

两件事情:

(1) 为了与 MVVM 模式保持一致,我建议对这些附加属性使用样式触发器,并将它们完全排除在视图模型之外。

(2)沿着同样的思路,我不会让你的视图模型知道像“背景颜色”这样纯粹是视图问题的概念。如果您的业务逻辑/VM 中存在某些关键视图问题(例如颜色),您可以使用值转换器将视图模型知道的内容转换为视图需要执行的操作。