首先,请原谅(并纠正!)任何误解 - 我对任何 .NET 都是全新的。
我和我的团队正在使用 MVVM 模式在 Silverlight 中构建应用程序。现在,我们为具有各种属性(例如它的背景颜色)的对象创建一个 View 模型。 VM 实现 INotifyPropertyChanged,以便在更新这些属性时通知监听器。
问题是这些是 Canvas 上的拖放对象,每次改变 Canvas 上的位置时我们都想运行一些逻辑。但是,我的理解是,因为 Canvas.Left 和 Canvas.Top 是附加属性,所以我不能像对待对象的固有属性那样对待它们。
有没有办法让这些附加属性与 INotifyPropertyChanged 一起工作?如果不是,那么响应 Canvas.Left 和 Canvas.Top 属性变化的最佳方式是什么。
非常感谢!
最佳答案
两件事:
(1) 为了与 MVVM 模式保持一致,我建议使用 style triggers对于这些附加属性,将它们完全排除在 View 模型之外。
(2) 按照同样的思路,我不会让您的 View 模型了解诸如“背景颜色”之类的纯粹是 View 问题的概念。如果您的业务逻辑/VM 中有某些内容需要像颜色这样的 View 关注点,您可以使用 value converters将 View 模型知道的内容转换为 View 需要执行的操作。
关于c# - 附加属性可以在 INotifyPropertyChanged 框架内工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152482/