【发布时间】:2016-03-22 16:15:09
【问题描述】:
我正在使用 MVVMLight 并使用视图模型构建了一个子视图 XAML 页面。我想将此代码用作多个 XAML 页面中的子视图。
当我这样做时,定位器显然链接到一个版本。因此,当我在一个页面上更改视图模型时,其他页面的子视图模型也会更改。
我已经搜索了解决方案,但似乎找不到解决方法。
我的 Viewmodel 定位器如下所示:
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<Page1ViewModel>();
SimpleIoc.Default.Register<Page2ViewModel>();
SimpleIoc.Default.Register<SubViewModel>();
}
在 Page1 和 Page2 中,我连接到同一个 SubViewModel,这显然是问题所在:
public class Page1ViewModel: MyBase_ViewModel
{
IDataService services;
public Page1ViewModel(IDataService serv)
{
services = serv;
SubViewModel= Locator.SubViewModel;
}
}
【问题讨论】:
标签: c# wpf mvvm-light