3

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 和谷歌这个问题之后)。

欢迎任何帮助。

4

2 回答 2

12

您可以PreferredConstructorAttribute使用默认构造函数来解决此问题。

于 2013-09-26T06:17:18.240 回答
-2

这没有任何改变:

Public Class PreferredConstructorAttribute : Inherits Attribute
    Public Sub New()
    End Sub
End Class

Public Class tblFiltresChamps
    Public Sub New() ' Le JsonToObject a besoin d'un constructeur sans paramètres
        items = New BindingList(Of tblFiltreChamps)()
    End Sub
    <PreferredConstructor>
    Public Sub New(Env As SqiD23.Env)
        Me.New()
        _Env = Env
    End Sub
End Class
于 2017-01-02T16:39:12.693 回答