ViewModel
在 Mvvm Light 中有多个构造函数时,我遇到了这个问题:
我有一个视图模型,它有一个空的ctor,然后我创建了第二个接收参数的视图模型(在某些情况下想做其他事情......)。如果我尝试运行该应用程序,我会得到:
无法注册:在 Inner_VM 中找到多个构造函数,但没有一个用 PreferredConstructor 标记。
仅当我在以下位置注册时才会发生这种ViewModel
情况Locator
:
SimpleIoc.Default.Register<Inner_VM>();
然后在属性中使用它:
public Inner_VM Inner
{
get { return ServiceLocator.Current.GetInstance<Inner_VM>(); }
}
如果我省略 , 的注册ViewModel
,然后在属性中使用它:
public Inner_VM Inner
{
get { return new Inner_VM(); }
}
一切似乎都有效......
我认为第一个选项使用正在重用的静态实例,而第二个选项只是在我每次使用它时创建一个新实例。(这在我的应用程序中并不重要,但我试图理解原因,并且找不到任何解释它的东西,即使在搜索了 SO 和谷歌这个问题之后)。
欢迎任何帮助。