WPF , MVVM , MasterDetailPage , Designing

本文关键字:Designing MasterDetailPage MVVM WPF | 更新日期: 2023-09-27 18:20:19

我正努力在mvvm世界中行走,

我不起诉任何框架,只起诉我在http://blog.roboblob.com/tag/viewmodellocator/

我真的很喜欢那个帖子,而且效果很好。

我正在尝试创建一个包含3个用户控件的主细节视图。其中一个需要根据用户输入进行更改(如向导)

所以我有类似的东西

MasterDetailsView
 -> MenuView
 -> FirstPageView
 -> SliderView

根据我读到的帖子,每个视图都创建了自己的视图模型,并"自动"绑定所以FirstPageView得到了他的视图模型。

如果SliderView更改选择,我想绑定到FirstPageView一个新的视图模型

如果FirstPageView有按钮(下一步)点击里面,我想把FirstPageView切换到SecondPageView等等

我有点迷路了,有人能告诉我如何设计和解决这个问题吗?

我应该使用mvvm-light还是其他一些框架?我试着使用mvvm-light,但缺少示例使我望而却步。

欢迎任何指导,谢谢。

WPF , MVVM , MasterDetailPage , Designing

下面的语句是错误的:

每个视图创建自己的视图模型并"自动"绑定FirstPageView得到了他的视图模型

您的视图不应该对视图模型的生命周期负责。

使用MVVM模式时需要记住的最重要的一点是,应该可以在没有视图的情况下执行应用程序。在您的情况下,In将创建一个与您所需视图紧密镜像的视图模型。这是伪代码:

MasterDetailsViewModel
{
  MenuViewModel
  CurrentPageViewModel
  SliderViewModel
}

请注意,这里的最大区别是我们有一个CurrentPageViewModel,而不是一个特定于页面的视图模型。此属性最初是一个FirstPageViewModel实例,然后随着用户从一个页面转到下一个页面而更改。

关于如何实现这一点的详细信息,我完全推荐Josh Smith的文章:

WPF应用程序与模型视图视图模型设计模式