请教一个使用MVVM进行系统分层的问题
想了解一下MVVM的具体实现,所以就写个小程序实际用用,结果用的时候发现了一个问题。想问问大家的意见,有没有什么比较合适的解决方案。
这个小程序大体分了了M,VM,V三层,一层一个DLL。(也许这就有问题……)其中VM层里定义了Command。V层里都是窗体类。
关系是:V使用VM和M,VM使用M。
问题是这样的:有一个Command(在VM层)需要窗体的切换(跳转),但是从VM层又无法直接使用V层的窗体类。一时不知道用哪种方式实现比较好。
自己想到的有这样几个方法。
1. 在M层定义一个公共的CommandProcess,并由V层具体实现,然后在VM层发消息到M层,由V处理。
2. 在M层为所有窗体类做抽象,并维护窗体列表,由V实例化。然后VM使用M层定义的抽象窗体列表进行跳转。
3. 将VM和V合并到一个DLL中。
4. 使用反射。
5. 将Command放在V层,或不使用Command?
不知大家建议应该怎么做呢?