为什么我们不能获得CustomerViewModel的相同实例?

时间:2016-02-08 16:51:26

标签: c# wpf mvvm-light

我们正在使用MVVM Light。我们必须创建同一个小类集合的多个实例:CustomerViewModel,ProductViewModel和OrdersViewModel。为了确保我们正在调用任何这些类的相同实例,我们创建了一个GUID并将其与这3个类中的任何一个的每个实例相关联。这是我们第一次使用MVVM Light。我们的理解是MVVM Light将在每次调用指定特定实例的GetInstance等调用时使用Singleton模式。因此,为了确保我们调用相同的一个,我们传递了我们之前与特定类关联的GUID。但它总是失败。

我们已经在这里捣乱了3个星期,并没有接近解决它。

我在Customer类的构造函数中设置了断点,以查看GUID是什么:

public CustomerViewModel()
{
   RefreshList();
   AvailableFields = typeof(Customer).GetProperties().Select(a => a.Name).ToList<String>();
}

我将在RefreshList()上设置断点。 (我们的RefreshList()方法用于获取数据,然后在视图中的数据网格中显示。)正如您所看到的,该类的名称是CustomerViewModel。

但后来当我们尝试导航到客户详细信息视图模型时,它会在这种情况下调用CustomerViewModel应该是同一个实例:

public static CustomerViewModel GetCustomersById(string id)
{
    return ServiceLocator.Current.GetInstance<CustomerViewModel>(id);
}

此代码位于ViewModelLocator中。我在return语句上设置了一个断点并检查了id的值,它应该等于之前创建的GUID。它永远不会。为什么不?我们做错了什么?

0 个答案:

没有答案