WPF和Unity - 在类型上找不到匹配的构造函数

nia*_*iao 7 c# wpf unity-container

我想在使用VS2012的WPF应用程序中使用Unity,我将Unity容器定义如下:

IUnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType<IMainViewModel, MainViewModel>();
var window = unityContainer.Resolve<MainWindow>();
window.Show();
Run Code Online (Sandbox Code Playgroud)

我的窗口构造函数如下所示:

public MainWindow(IMainViewModel mainViewModel)
       {
            InitializeComponent();
            this.DataContext = mainViewModel;
        }
Run Code Online (Sandbox Code Playgroud)

当我运行该应用程序时,我收到以下错误:

PresentationFramework.dll中发生未处理的"System.Windows.Markup.XamlParseException"类型异常

附加信息:'类型'WPFClient.MainWindow'上找不到匹配的构造函数.您可以使用Arguments或FactoryMethod指令来构造此类型.行号"3"和行位置"9".

我究竟做错了什么?

Dar*_*rov 20

在你的App.xaml身上,确保你已经摆脱了StartupUri="MainWindow.xaml"被设置的财产.由于您已经覆盖了OnStartup应用程序并提供了自定义实例,因此MainWindow您不应该StartupUri在App.xaml文件中设置默认属性,并且WPF拼命地尝试在没有默认构造函数的情况下实例化类型.

  • 我花了很多时间来解决这个错误 - Expression Studio 4试图变得聪明并根据最后创建的控件重新插入StartupUri. (2认同)