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

标签 c# .net silverlight mvvm

首先,请原谅(并纠正!)任何误解 - 我对任何 .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/

相关文章:

c# - 如何将 F# 类型提供程序生成的类型公开给 C# 和 XAML

java - 使用 JDK 工具 wsimport 从 .NET 2.0 应用程序生成的 WSDL 生成 Java SOAP Web 服务客户端时出现问题

c# - 高级 TextReader 到 EndOfFile

c# - Silverlight ComboBox 绑定(bind)到 IEnumerable<BitmapImage>,其中图像从服务器下载

silverlight - 如何通过ID获取Silverlight TreeViewItem?

c# - WPF - 更改数据绑定(bind) DataGrid 上的列名

c# - AAD-B2C 与自定义角色存储的 ASP.Net Core 身份组合

c# - 使用基类 IEqualityComparer 执行 Distinct(),并且仍然返回子类类型?

c# - 如何比较枚举值和整数值?

c# - 并行执行任务 - Silverlight