Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF和Unity-在类型上找不到匹配的构造函数_C#_Wpf_Unity Container - Fatal编程技术网

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

C# WPF和Unity-在类型上找不到匹配的构造函数,c#,wpf,unity-container,C#,Wpf,Unity Container,我想在使用VS2012的WPF应用程序中使用Unity,我定义了Unity容器,如下所示: IUnityContainer unityContainer = new UnityContainer(); unityContainer.RegisterType<IMainViewModel, MainViewModel>(); var window = unityContainer.Resolve<MainWindow>(); window.Show(); public M

我想在使用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.main窗口”。您可以使用参数或FactoryMethod 用于构造此类型的指令。'行号'3'和行位置 “9”


我做错了什么?

在您的
App.xaml
中,确保您已删除正在设置的
StartupUri=“MainWindow.xaml”
属性。由于您已经覆盖了应用程序的启动时的
,并提供了
主窗口的自定义实例
,因此您不应该将默认属性保留在App.xaml文件中,而WPF拼命尝试在没有默认构造函数的情况下实例化一个类型。

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

<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>


公共部分类应用程序:应用程序
{
公共IContainer容器{get;private set;}
私有void应用程序\u启动(对象发送方、StartupEventArgs e)
{
var dependencyconfigulator=new DependencyConfig();
container=dependencyConfigurator.Configure();
container.Resolve();
MainWindow.Show();
}        
}

在容器中注册依赖项并实例化主窗口的代码放在哪个文件/位置?启动时受保护的覆盖无效(StartupEventArgs e)在App.xaml.csI中,我花了很多时间来解决这个bug-Expression Studio 4试图变得聪明,并根据上次创建的控件重新插入StartupUri。第二次回到这里。如果可以的话,我会再投你一票。干杯
public partial class App : Application
    {
        public IContainer container { get; private set; }

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            var dependencyConfigurator = new DependencyConfig();
            container = dependencyConfigurator.Configure();
            container.Resolve<WindowClassName>();
            MainWindow.Show();
        }        
    }