我该如何在多个ViewModel之间共享数据?
例如,应用程序中有一个名为Project的类。
public class Project : ModelBase
{
private string _projectName;
public string ProjectName
{
get { return _projectName; }
set
{
_projectName = value;
RaisePropertyChanged(() => ProjectName);
}
}
}
在多个ViewModels应用程序中,应该访问ActiveProject。如何在ViewModels之间共享Project是最好的方式?
- 中介者模式?(消息传递)
- 静态对象
- Singleton模式(如果是,则如何?)
我使用MVVM Light框架。
任何代码示例都将不胜感激。
ActiveProject
是由其中一个视图模型在某个地方创建的吗?如果是这样,那么消息传递可能是最好的选择(而且它并不是那么冗长)。另一个选项是将ActiveProject
注入到每个需要它的视图模型中,同时将ActiveProject
的生命周期设置为单例在所选择的 IoC 容器中 - 这是你提出的第三个选项...但到目前为止,这主要是我猜测。 - Patryk ĆwiekApp
类中作为静态属性不是更容易吗? - Federico Berasateguicontainer.RegisterSingle<Project>(() => new Project());
,然后仅在构造函数中请求Project activeProject
。其他IoC容器还支持命名注入,因此您也可以使用它。 - Patryk Ćwiek