猿问

带参数的 MVVMLight 打开视图

我正在尝试学习 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();

这是一个糟糕的方法吗?创建视图、使用一些参数实例化视图模型的最佳方法是什么?


ITMISS
浏览 221回答 1
1回答

Smart猫小萌

Ba 知道,如果您在 viewModel 中实例化一个视图对象,例如 CustomerView,您将打破 mvvm 模式。如果您的项目会增长,那应该是一个问题。如果你绝对想保持 mvvm 模式,你有两个选择:1)创建一个界面interface INavigationService{    NavigateTo(string viewName ,objet params);}创建此类的单例实现。将创建新 CustomerView() 和其他视图的逻辑放在此方法中。主要目标是将视图与其他任何东西分开。尝试使用注入在您的视图模型中只包含 INavigationService 引用。2)使用像Prism这样的mvvm很重的框架;
随时随地看视频慕课网APP
我要回答