我正在尝试使用 PRISM 创建一个模块,现在我在 View 中设置了 DataContext,这意味着我只能使用无参数构造函数,但这意味着我不能在构造函数中使用依赖注入(inject)(我使用 Unity)想要
如果可能的话,我不希望 View 和虚拟机相互了解,而是希望使用类似的东西
private void RegisterServices()
{
var employeeViewModel = new EmployeeViewModel();
_container.RegisterType<IEmployeeViewModel, EmployeeViewModel>();
_container.RegisterType<EmployeeView>();
EmployeeView.Datacontext = employeeViewModel;
}
我会在 EmployeeModule 中注册
这可能还是我应该使用代码隐藏?
最佳答案
您可以在构造函数中将ViewModel
的接口(interface)传递给View
。这样,View
只知道ViewModel
的接口(interface),ViewModel
对View
一无所知。
例如
public class EmployeeView : UserControl
{
public EmployeeView(IEmployeeViewModel vm)
{
this.DataContext = vm; //// better to set the ViewModel in the Loaded method
}
}
引用this blog post用于 MVVM 实例化的多种方法。
关于c# - 使用 Prism 设置数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870157/