我正在尝试学习 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很重的框架;
- 1 回答
- 0 关注
- 220 浏览
添加回答
举报
0/150
提交
取消