Dav*_*vy8 6 wpf business-logic mvvm viewmodel
我无法弄清楚如何在我的模型中添加一堆UI特定的东西,如INotifyProperyChanged和INotifyCollectionChanged,或者创建大量不同的事件并做一些感觉的事情,让视图模型得到模型更改的通知就像他们是UI特定的,应该远离模型.
否则,我只需要复制视图模型中的所有业务逻辑,以确保一切都是最新的,那么拥有模型的重点是什么呢?
我在模型中遇到的一个棘手的问题是"类别"类的属性.您可以将其视为树结构,属性是所有叶节点后代.在模型中,属性是通过递归方式生成所有它的子项,这一切都很好.但是视图模型需要绑定到该属性,并且需要知道它何时发生更改.我应该更改模型以适应视图模型吗?如果我这样做,那么视图模型此时并没有真正做任何事情,模型会引发所有必要的更改通知,视图可以直接绑定到模型.此外,如果模型是我没有源的东西,我将如何解决这个问题?
我不同意这一点,INotifyPropertyChanged并且INotifyCollectionChanged是特定于UI的.它们位于未绑定到任何特定UI堆栈的名称空间和程序集中.出于这个原因,我通常会尽可能地将这种行为放在系统中(通常是数据层).
如果有一些原因你不想把它放在那个级别,那很好.您可以将其放在更高级别,例如服务或UI层.但是,您还需要确保通过该层对数据结构进行所有更改.