我想在使用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;
我做错了什么?
答案 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>