首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带参数的MVVMLight打开视图

带参数的MVVMLight打开视图
EN

Stack Overflow用户
提问于 2018-07-24 03:12:32
回答 1查看 195关注 0票数 0

我正在尝试学习MVVMLight,并且我一直在为编辑对象创建一个新的视图。

我有一个带有CustomersViewModelCustomersView,它显示一个与客户的数据网格。双击DataGridRow,我打开了一个实现CustomerViewModelCustomerView来编辑客户,我在CustomersViewModel中使用了以下代码

 var cv=new CustomerView();
 var cvm=new CustomerViewModel();
 cvm.IsEdit = true;
 cvm.Customer = customer;
 cv.DataContext = cvm;
 cv.ShowDialog();

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 03:32:22

请注意,如果您在viewModel中实例化一个视图对象,如CustomerView,您将打破mvvm模式。如果你的项目会增长,这应该是个问题。

如果您绝对想要维护mvvm模式,您有两个选择:

1)创建接口,如下所示

interface INavigationService
{
    NavigateTo(string viewName ,objet params);
}

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

2)为mvvm使用一个非常重的框架,比如Prism;

编辑:mvvm ligth5.0提供了自己的INavigationService接口。如果你使用的是这个版本,你可以决定实现它。它没有提供任何实现...请参阅MVVM Light 5.0: How to use the Navigation service

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51485705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档