我已经阅读了各种关于将模型数据的更改通知给视图模型的方法。有些人建议模型在可能的情况下实现INotifyPropertyChanged,以便它可以通知视图模型已更改的属性。有些人建议在模型和视图模型之间增加服务层,服务层实现INPC,通过这个服务层将方法调用路由到模型,以便服务层通知视图模型。
我认为后者是前者的更细粒度的修订,并已开始在我的模型类中实现INPC。这感觉不对,因为:
a)我现在必须在我的视图模型中编写事件处理程序来处理来自模型的通知。这采用了一个长开关(propertyName)的形式,在其中设置相应的属性(s)在视图模型上,导致NPC再次向上发送。我觉得我在这里写了很多样板代码。
b)视图模型现在通过一堆仅由约定规定的字符串与我的模型耦合在一起。更不用说这给IDE带来的困难。
c)我的模型必须修改以适应这个上下文!如果由于某种原因关闭了它怎么办?我认为这样的模式旨在增加代码可重用性和关注点分离。不仅如此,但是触发INPC事件所需的代码是乏味的、重复的,而且不太抽象。
我非常想知道WPF专家们如何解决这个问题,无论是通过依赖属性等方式。我有一种感觉,我错过了什么。我不喜欢使用框架,因为我想从基础开始学习。我已经离开WPF一两年了,最近使用AngularJS工作让我质疑我的方法。
谢谢!
我认为后者是前者的更细粒度的修订,并已开始在我的模型类中实现INPC。这感觉不对,因为:
a)我现在必须在我的视图模型中编写事件处理程序来处理来自模型的通知。这采用了一个长开关(propertyName)的形式,在其中设置相应的属性(s)在视图模型上,导致NPC再次向上发送。我觉得我在这里写了很多样板代码。
b)视图模型现在通过一堆仅由约定规定的字符串与我的模型耦合在一起。更不用说这给IDE带来的困难。
c)我的模型必须修改以适应这个上下文!如果由于某种原因关闭了它怎么办?我认为这样的模式旨在增加代码可重用性和关注点分离。不仅如此,但是触发INPC事件所需的代码是乏味的、重复的,而且不太抽象。
我非常想知道WPF专家们如何解决这个问题,无论是通过依赖属性等方式。我有一种感觉,我错过了什么。我不喜欢使用框架,因为我想从基础开始学习。我已经离开WPF一两年了,最近使用AngularJS工作让我质疑我的方法。
谢谢!