如何让Prism / Unity自动解析View(UserControl)?

时间:2009-07-28 07:45:51

标签: dependency-injection module unity-container prism composite

在复合应用程序(Prism)中,当我的模块加载时,我收到此错误:

  

{“当前的构建操作(构建   密钥构建   键[CustomersModul.ViewModels.CustomerAllViewModel,   null])失败:参数视图   尝试时无法解决   调用构造函数   CustomersModul.ViewModels.CustomerAllViewModel(CustomersModul.Views.CustomerAllView   视图)。 (战略类型   Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy,   index 2)“}

解析这个类:

CustomerAllViewModel layoutManager = this.container.Resolve<CustomerAllViewModel>();

该课程看起来像这个

public class CustomerAllViewModel : ViewModelBase
{
    public CustomerAllView View { get; set; }
    public ICommand TextChangeCommand { get; set; }
    private Customer customer;

public CustomerAllViewModel(CustomerAllView view)
{
    View = view;
    view.DataContext = this;
    ...

通常我会解析没有构造函数参数的 Presenters 并在内部实例化他们的视图。这是我第一次使用 ViewModel ,它接受View作为参数。

有趣的是,当我使用 Resharper 进入视图时,它询问我是否要转到XAML或后面的代码,所以也许Prism会混淆哪一个实例化?

如何让Prism在参数中自动实例化此视图(带有XAML和代码隐藏的UserControl)?

2 个答案:

答案 0 :(得分:4)

有时这实际上不是错误,而是其他内容。查看内部异常,或调用Microsoft.Practices.Composite.ExceptionExtensions.GetRootException(ex)以获取根异常。您可能会发现在您未看到的构造函数中抛出了一些错误。

答案 1 :(得分:0)

您是否已将CustomerAllView添加到容器中?当我忘记向容器添加类型时,我通常会收到此错误。