我尝试处理从一个ViewModel传递值到另一个ViewModel的问题.这是一个例子.
我们有Parent View及其相应的ViewModel,在该View中我们选择item,然后我们想要创建新的Child View(编辑选择的细节),在XAML中实例化它的ViewModel.当我需要将值传递给Child ViewModel构造函数时,会出现问题(它是必须从数据库中获取的数据的Id).我假设Parent的ViewModel必须与Child的ViewModel进行通信 - 但是由于Child的ViewModel没有实例化,因为Child的ViewModel在XAML中没有实例化,因此我们不能使用Messenger(MVVM Light Toolkit)并且只是从Parent的ModelView传播该信息,因为Child的ModelView无法订阅(注册到该类型的消息).
我不想打破MVVM模式,也找不到任何好的解决方案.我很感激能得到的所有帮助.
MVVM模式的主要租户之一是您应该能够在没有View的情况下执行ViewModel代码,以便对View逻辑进行单元测试.换句话说,理想情况下,您应该能够以"无头"模式执行您的应用程序.
在您的示例中,您声明ParentView创建了一个ChildView,后者又创建了一个ChildViewModel(您正在努力连接).这可以在无头模式下工作吗?在我看来,你依靠你的视图来执行这个父子导航.
如果以另一种方式翻转它,让ParentViewModel创建ChildViewModel,则ViewModel之间的通信不再存在问题.ParentView需要为正在创建的新ChildViewModel"监视"(即属性更改),并相应地构造ChildView.
更详细:
| 归档时间: |
|
| 查看次数: |
8981 次 |
| 最近记录: |