使用具有Mvvm light和ViewModelLocator的多个构造函数时出现异常

Noc*_*tis 2 c# wpf mvvm-light

当我ViewModel在Mvvm Light中使用多个构造函数时,我遇到了这个问题:

我有一个具有空ctor的视图模型,然后我创建了第二个接收参数的模型(在某些情况下想要做其他事情......).如果我尝试运行应用程序,我会得到:

无法注册:在Inner_VM中找到多个构造函数,但没有使用PreferredConstructor标记.

这只是如果我注册碰巧ViewModelLocator:

SimpleIoc.Default.Register<Inner_VM>();
Run Code Online (Sandbox Code Playgroud)

然后在属性中使用它:

public Inner_VM Inner
{
    get { return ServiceLocator.Current.GetInstance<Inner_VM>(); }
}
Run Code Online (Sandbox Code Playgroud)

如果我省略了注册ViewModel,然后在属性中使用它:

public Inner_VM Inner
{
    get { return new Inner_VM(); }
}
Run Code Online (Sandbox Code Playgroud)

一切似乎都有效......

我认为第一个选项使用正在重用的静态实例,第二个选项只是在我每次使用它时创建一个新实例.(这在我的应用程序中并不重要,但我试图了解原因,并且找不到任何解释它,即使在搜索SO和谷歌这个问题之后).

任何帮助都会受到欢迎.

Nit*_*tin 10

您可以PreferredConstructorAttribute使用Default构造函数来解决此问题.