我们有一个项目,它有这个项目组装结构:
- 训练模型
- 通过 mvvm 灯光视图模型/定位器将数据绑定到模型的 XAML 表单
这一切都很好。
在加载事件中,我们有效地重新分配模型:
ViewModelLocator.Main.Training = new Training();
这工作正常,模型仍然全部绑定并更新以在表单上显示新数据。
为了整洁,我们想将 ViewModel 移到它自己的项目/程序集中。即实现这个结构:
- 训练模型
- XAML 表单
- mvvm 灯光视图模型/定位器
这是视图模型:
public class MainViewModel : ViewModelBase
{
private Training training;
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
this.training = new Training();
}
public Training Training
{
get
{
return this.training;
}
set
{
this.training = value;
}
}
}
ViewModel 有一个默认定位器:
public class ViewModelLocator
{
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<MainViewModel>();
}
public static MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public static void Cleanup()
{
// TODO Clear the ViewModels
}
}
当我将 ViewModel 移动到它自己的程序集中并运行项目时,在初始运行时,XAML 是正确绑定到模型实例的数据。如上所示,在分配新的培训对象时,表单不会更新。
考虑到唯一不同的是 mvvw-light 视图模型在另一个程序集中,可能导致这种情况的原因是什么?
谢谢