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

时间:2012-02-05 19:57:44

标签: c# .net silverlight mvvm

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

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

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

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

非常感谢!

1 个答案:

答案 0 :(得分:3)

两件事:

(1)为了保持MVVM模式,我建议将style triggers用于这些附加属性,并将它们完全保留在View模型之外。

(2)沿着同样的路线,我不会让你的视图模型知道像纯粹视角关注的“背景颜色”这样的概念。如果您的业务逻辑/ VM中存在某些关键视图关注点,那么您可以使用value converters从视图模型知道的内容转换为视图需要执行的操作。