silverlight – MVVM在视图模型之间传递值

silverlight – MVVM在视图模型之间传递值,第1张

概述我尝试处理从一个ViewModel传递值到另一个ViewModel的问题.这是一个例子. 我们有Parent View及其相应的ViewModel,在该View中我们选择item,然后我们想要创建新的Child View(编辑选择的细节),在XAML中实例化它的ViewModel. 当我需要将值传递给Child ViewModel构造函数时,会出现问题(它是必须从数据库中获取的数据的Id).我假设 我尝试处理从一个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.

更详细:

> ParentVIEw实例化ParentVM>用户以需要孩子的方式进行交互> ParentVM创建一个ChildVM,通过ChildVM属性公开它> ParentVIEw处理生成的PropertyChanged事件,创建一个ChildVIEw,将其DataContext设置为ChildVM.

总结

以上是内存溢出为你收集整理的silverlight – MVVM在视图模型之间传递值全部内容,希望文章能够帮你解决silverlight – MVVM在视图模型之间传递值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005461.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存