为了账号安全,请及时绑定邮箱和手机立即绑定

带参数的 MVVMLight 打开视图

带参数的 MVVMLight 打开视图

C#
ITMISS 2021-10-24 16:42:55
我正在尝试学习 MVVMLight 并且我一直在创建用于编辑对象的新视图。我有与客户CustomersView一起CustomersViewModel显示数据网格。双击 DataGridRow,我打开一个CustomerView实现 aCustomerViewModel来编辑客户的代码,我在以下代码中使用CustomersViewModel: var cv=new CustomerView(); var cvm=new CustomerViewModel(); cvm.IsEdit = true; cvm.Customer = customer; cv.DataContext = cvm; cv.ShowDialog();这是一个糟糕的方法吗?创建视图、使用一些参数实例化视图模型的最佳方法是什么?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

Ba 知道,如果您在 viewModel 中实例化一个视图对象,例如 CustomerView,您将打破 mvvm 模式。如果您的项目会增长,那应该是一个问题。


如果你绝对想保持 mvvm 模式,你有两个选择:


1)创建一个界面


interface INavigationService

{

    NavigateTo(string viewName ,objet params);

}

创建此类的单例实现。将创建新 CustomerView() 和其他视图的逻辑放在此方法中。主要目标是将视图与其他任何东西分开。尝试使用注入在您的视图模型中只包含 INavigationService 引用。


2)使用像Prism这样的mvvm很重的框架;


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信