c# - 使用 Prism 设置数据上下文

标签 c# wpf dependency-injection prism unity-container

我正在尝试使用 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),ViewModelView一无所知。

例如

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/

相关文章:

java - 注入(inject)设置还是加载一次全局查找?

c# - 如何用依赖注入(inject)替换工厂模式

c# - 在 XPather.com 上使用 XML 命名空间的奇怪 XPath 行为?

c# - 如何使用类变量填充 TreeView (Windows 窗体)

c# - 从 telerik 网格中删除标题 (RAZOR)

c# - 事件处理程序 + 格式化多个按钮 - WPF

c# - 如何使 DataTemplate 响应 WPF 中的双击?

c# - 按钮上的 MVVM 单击更改文本框的可见性

c# - 管理一次性类依赖注入(inject)

java - Guice:@Nullable 拒绝与@Named 一起工作