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

时间:2014-06-16 19:58:54

标签: c# wpf unity-container

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

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

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

public MainWindow(IMainViewModel mainViewModel)
       {
            InitializeComponent();
            this.DataContext = mainViewModel;
        }

运行应用程序时出现以下错误:

  

未处理的类型异常   &#39; System.Windows.Markup.XamlParseException&#39;发生在   PresentationFramework.dll

     

其他信息:&#39;在类型上找不到匹配的构造函数   &#39; WPFClient.MainWindow&#39 ;.您可以使用Arguments或FactoryMethod   用于构造此类型的指令。&#39;行号&#39; 3&#39;和线位置   &#39; 9&#39;

我做错了什么?

2 个答案:

答案 0 :(得分:19)

App.xaml中,请确保已删除正在设置的StartupUri="MainWindow.xaml"属性。由于您已覆盖应用程序的OnStartup并提供了MainWindow的自定义实例,因此您不应该在App.xaml文件和WPF中拼命设置默认的StartupUri属性。试图在没有默认构造函数的情况下实例化一个类型。

答案 1 :(得分:0)

要补充一个好的答案,请删除启动URI后不要忘记在App.xaml声明中调用启动方法:

UITextView

<Application x:Class="Test.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Test.App"
             Startup="Application_Startup">
    <Application.Resources>         
    </Application.Resources>
</Application>