当我在Mvvm Light中使用具有多个构造函数的ViewModel
时,我遇到了这个问题:
我有一个视图模型,它有一个空构造函数,然后我创建了第二个构造函数,接受一个参数(希望在某些情况下执行其他操作......)。 如果我尝试运行应用程序,我会得到以下错误:
无法注册:在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(); }
}
一切似乎都在运行中...
我认为第一种选项利用了被重复使用的静态实例,而第二个则每次使用时都会创建一个新的实例。(虽然这对我的应用程序来说不是很重要,但我正在尝试理解为什么,在搜索S.O.和谷歌寻找答案之后仍然找不到任何解释)。
任何帮助都将受到欢迎。