我已经阅读了将模型数据的更改传达给视图模型的各种方法。有人建议模型应该尽可能实现 INotifyPropertyChanged,以便它可以通知视图模型更改的属性。有人建议在模型和视图模型之间建立一个服务层,服务层实现 INPC,方法调用通过该服务层路由到模型,以便服务层通知视图模型。
我认为后者是前者的更精细的修订版,并且已经开始在我的模型类中实现 INPC。感觉不对,因为
a) 我现在必须在我的视图模型中为来自模型的通知编写一个事件处理程序。这采用长开关(propertyName)的形式,它在视图模型上设置相应的属性,导致 NPC 再次向上发送。我觉得我在这里写了很多样板代码。
b) 视图模型现在通过一堆字符串耦合到我的模型,这些字符串完全由约定规范,即没有定义“接口”。更不用说这会导致 IDE 的困难。
c)我的模型必须修改以适应这种情况!如果由于某种原因关闭了怎么办?我认为这样的模式旨在提高代码的可重用性和关注点的分离。不仅如此,触发 INPC 事件所需的代码也是乏味和重复的,而且不是真正抽象的。
我真的很想知道 WPF 专业人员如何通过依赖属性等来解决这个问题。我觉得我错过了一些东西。我不热衷于使用想要“从头开始”学习的框架。我已经离开 WPF 一两年了,最近使用 AngularJS 让我质疑我的方法。
谢谢!