我正在使用PRISM的项目中,我已经将导航实现为树视图,并且任何单击事件都会发生使用事件aggergation引发事件的注册模块多视图的多视图模型(如向导应用程序,您可以通过许多视图收集数据)。我想拥有一个可以通过这个视图模型传递的共同或共享或单例模型,并最终保存....用户可以随时点击任何导航链接,它应该将数据保存到此单例模型expsosed通过不同的视图模型。你有没有像这样做的样品......或者你可以快速打开一下如何做到这一点?或者根本无法做到这一点。我正在关注Brian Lagunas的Pluralsight Video for PRISM的所有模式,所以请尽量使用这种方式....将模型的单实例传递到同一个模块中的多个视图对于不同的视图
1
A
回答
0
我不知道,是棱镜方式还是别的什么东西,当我构建像向导一样的东西时,首先所有我创建向导收集的所有数据的实例。
public WizardData wd = new WizardData();
然后,向导的每一页都被这个wd
实例初始化,即
public FirstWizardPage(WizardData wd)
{
this.wizardData = wd;
}
所以,这种方式让你有在每一页上按钮Finish
,例如。您可以使用wd
或其属性初始化您的ViewModel
。
这种方式不是最好的。它只是可能的方式之一。
另一个 - 是创建单例并使用它,而不需要通过页面到页面的引用。
0
当你使用棱镜时,你也有一个依赖注入容器,通常是Unity或MEF。为了解决你的问题,你可以注册你的模型作为单身到那些DI容器。每个查看模型要求DI容器解决它们的依赖关系,在我们的特殊情况下,模型将从DI容器中获取单例实例。
统一例如:你注册你的模型作为单一实例:
public void Initialize()
{
container.RegisterInstance<Model>(new Model(), new ContainerControlledLifetimeManager());
}
现在你可以解决您的视图模型的依赖性:
public ViewModel(IUnityContainer container)
{
Model model = container.Resolve<Model>();
}
2
我想有一个MasterViewModel
控制的“向导“页面和当前状态
它将包含以下属性:
List<ViewModelBase> Pages
int CurrentPageIndex
ViewModelBase CurrentPage
,它返回Pages[CurrentPageIndex]
MyClass DataObject
,与MasterViewModel
去的MasterView
只不过是将一个ContentControl
更与它的Content
势必CurrentPage
。我可能也是在MasterView
告诉WPF这View
绘制与Page
你MasterViewModel
将负责处理的网页,并通过每个页面需要的数据的引用定义DataTemplates
。例如在构造函数中它可能会说,
public MasterViewModel(MyClass dataObject)
{
DataObject = dataObject;
Pages.Add(new InfoPage(DataObject));
Pages.Add(new AddressPage(DataObject.Addresses));
Pages.Add(new PhonePage(DataObject.Phones));
Pages.Add(new SaveMyClassPage(DataObject));
CurrentPageIndex = 0;
}
我有一个例子here如果你有兴趣
相关问题
- 1. ASP.NET MVC视图模型传递到不同的视图模型
- 2. 在单个视图中传递多个视图模型
- 3. 将多个模型传递给视图
- 4. 在一个视图中的视图模型/实体或多个视图模型的多个视图?
- 5. 发送到单个视图实例的多个模型
- 6. 传递一个实例变量从模型到视图
- 7. 用ASP.Net传递两个不同的模型到一个视图MVC
- 8. 设计 - 一个模型和多个不同的注册视图
- 9. Symfony:多个模型的单一视图
- 10. 将一个模型从部分视图传递到父视图,并将另一个模型绑定到相同的父视图
- 11. 将信息从一个视图模型传递到另一个视图
- 12. 从一个视图模型调用不同视图模型的方法
- 13. 不同模型的多视图MVC PartialView
- 14. MVC 4将视图模型携带到两个不同的HTML表单视图模型未设置
- 15. 将多个模型传递给使用MVC3和Ninject的视图
- 16. 将通用模型传递到视图
- 17. 是否可以使用从单个模式视图控制器退回到同一个源视图控制器的多个实例中的一个实例?
- 18. 如何将相同的模态从视图中传递到部分视图
- 19. 单视图模型(iOS)的多视图
- 20. 将参数从一个视图模型传递到另一个视图模型wpf
- 21. 在MVC3的一个视图中使用不同的两个ado.net实体模型
- 22. 单一模型 - 多个过滤视图
- 23. 不同文件中的模型/视图
- 24. 无法将视图模型传递给MVC中的视图
- 25. MVC - 另一个模型视图中的模型视图
- 26. 在一个视图中的不同模型
- 27. 是否可以将局部视图传递给与其所在视图所用模型不同的模型?
- 28. MVC 5 - 视图中的列表视图(不同的模型)?
- 29. 在Prism/Silverlight中创建视图模型的多个实例
- 30. 许多视图的一个模型