Mar*_*ngs 5 c# data-binding mvvm hierarchical-data two-way-binding
这个问题是这个旧问题的后续问题,它更像是一个确认而不是一个开放的问题.
我的ViewModel实例有一个Model的私有实例_modelInst.
ViewModel在编辑期间可以独占访问Model的数据(因此Model不需要实现INotifyPropertyChanged).
现在我有三种方法可以从视图中编辑模型数据:
直接在Model实例上获取/设置,
例如,对于简单的值字段,
return _modelInst.fieldname;
_modelInst.fieldname = value;
这个很容易实现...
创建一个ViewModel实例并对父数据结构
进行操作,例如对于更复杂的对象类型,如结构:
这意味着_modelInst为每个结构创建一个由父级实现的新接口(使用更新例程).
创建ViewModel实例,而不直接了解父类的数据结构,
例如父类中的(列表)类
为每个类创建一个新的ViewModel
通过以下方式向父级发送更新说明
所有这些都是一个很大的混乱实现,为可编辑的模型的每个领域创建功能.
这几乎意味着模型的所有领域......
(4.)可以创建一个通用的ViewModel,它只通过反射工作,其中每个子对象都知道它的父对象和它的字段名(+ index,如果在列表中).
只有root的逻辑才会干扰模型.
但是,该解决方案还需要一种方法来存储其中的字段的路径_modelInst.
有没有其他(更简单)的方法来实现这一目标?
我是否(再次)误解了MVVM的原理?
MVVM是否适合处理大型分层数据结构?