C# 带参数的MVVMLight打开视图
我正在尝试学习MVVMLight,我一直在创建一个用于编辑对象的新视图 我有C# 带参数的MVVMLight打开视图,c#,wpf,mvvm-light,C#,Wpf,Mvvm Light,我正在尝试学习MVVMLight,我一直在创建一个用于编辑对象的新视图 我有CustomersView和CustomersViewModel一起显示客户的数据网格。双击DataGridRow,我打开了一个CustomerView,它实现了一个CustomerViewModel来编辑客户,我正在CustomerViewModel中使用此代码: var cv=new CustomerView(); var cvm=new CustomerViewModel(); cvm.IsEdit = tr
CustomersView
和CustomersViewModel
一起显示客户的数据网格。双击DataGridRow,我打开了一个CustomerView
,它实现了一个CustomerViewModel
来编辑客户,我正在CustomerViewModel
中使用此代码:
var cv=new CustomerView();
var cvm=new CustomerViewModel();
cvm.IsEdit = true;
cvm.Customer = customer;
cv.DataContext = cvm;
cv.ShowDialog();
这是一个糟糕的方法吗?用一些参数实例化视图模型,创建视图的最佳方法是什么?请注意,如果在视图模型中实例化视图对象(如CustomerView),则应打破mvvm模式。这应该是一个问题,如果你的项目将增长 如果您绝对想要保持mvvm模式,您有两个选择: 1) 创建一个像
interface INavigationService
{
NavigateTo(string viewName ,objet params);
}
创建该类的单例实现。将tht创建新CustomerView()和其他视图的逻辑放在此方法中。主要目标是将视图与其他任何内容分开。尝试使用injection在viewmodels中只包含INavigationService引用
2) 为mvvm(如Prism)使用一个非常沉重的框架
编辑:mvvm ligth 5.0提供了自己的INavigationService接口。如果使用此版本,则可以决定实现它。它没有提供任何实现。。。
请参见Ba注意,如果在viewModel中实例化一个视图对象,如CustomerView,则应打破mvvm模式。这应该是一个问题,如果你的项目将增长 如果您绝对想要保持mvvm模式,您有两个选择: 1) 创建一个像
interface INavigationService
{
NavigateTo(string viewName ,objet params);
}
创建该类的单例实现。将tht创建新CustomerView()和其他视图的逻辑放在此方法中。主要目标是将视图与其他任何内容分开。尝试使用injection在viewmodels中只包含INavigationService引用
2) 为mvvm(如Prism)使用一个非常沉重的框架
编辑:mvvm ligth 5.0提供了自己的INavigationService接口。如果使用此版本,则可以决定实现它。它没有提供任何实现。。。
参见我之前问过一个问题。您可以使用DI安装viewmodel,然后直接修改我之前询问的属性。您可以使用DI安装viewmodel,然后直接修改属性谢谢。实现是针对页面的。我将尝试了解如何使用该服务打开windows。谢谢。实现是针对页面的。我将尝试了解如何使用该服务打开windows。