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

问题描述 投票:7回答:2

我想在使用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;
        }

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

类型的未处理异常“ System.Windows.Markup.XamlParseException”发生在PresentationFramework.dll

其他信息:'在类型上找不到匹配的构造函数“ WPFClient.MainWindow”。您可以使用Arguments或FactoryMethod指令来构造这种类型。”行号“ 3”和行位置'9'。

我在做什么错?

c# wpf unity-container
2个回答
20
投票

[在App.xaml中,请确保已摆脱了设置的StartupUri="MainWindow.xaml"属性。由于您已经覆盖了应用程序的OnStartup并提供了MainWindow的自定义实例,因此您不应保留App.xaml文件中设置的默认StartupUri属性,而WPF拼命尝试实例化一个类型而无需默认的构造函数。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.