我想在使用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'。
我在做什么错?
[在App.xaml
中,请确保已摆脱了设置的StartupUri="MainWindow.xaml"
属性。由于您已经覆盖了应用程序的OnStartup
并提供了MainWindow
的自定义实例,因此您不应保留App.xaml文件中设置的默认StartupUri
属性,而WPF拼命尝试实例化一个类型而无需默认的构造函数。
为补充出色的答案,在删除启动URI之后,请不要忘记在App.xaml声明中调用启动方法: