2012-01-16 176 views
1

我试图走我的路在MVVM世界,WPF,MVVM,MasterDetailPage,设计

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

看到我很喜欢那个帖子,它工作得很好。

我试图创建一个包含3个用户控件的主详细视图。 其中一人需要根据用户输入改变(如向导)

所以我必须通过后,我读像

MasterDetailsView 
-> MenuView 
-> FirstPageView 
-> SliderView 

,每个视图中创建自己的视图模型,并将其绑定“全自动” 所以FirstPageView得到了他的viewmodel。

如果SliderView改变选择我要绑定到FirstPageView一个新的视图模型

如果FirstPageView了按钮(下一页)里面点击我要FirstPageView切换到SecondPageView和等。

我是有点失落,任何人都可以告诉我如何设计和解决这个问题?

我应该使用mvvm灯还是其他一些框架?我尝试使用mvvm light,但缺乏示例使我回不起来。

任何指导将受到欢迎,谢谢。

回答

2

下面的语句是错误的:

每个视图中创建自己的视图模型,并将其绑定“全自动”,使 FirstPageView得到了他的视图模型

你的观点不应该负责的生命周期你的视图模型。

使用MVVM模式时要记住的最重要的事情之一是应该可以在没有您的视图的情况下执行您的应用程序。在你的情况下,将创建一个视图模型,密切反映你所期望的观点。下面是伪代码:

MasterDetailsViewModel 
{ 
    MenuViewModel 
    CurrentPageViewModel 
    SliderViewModel 
} 

通知很大的区别这里,我们有一个CurrentPageViewModel,而不是一个视图模型是具体到一个页面。该属性以FirstPageViewModel实例开始,然后随着用户从一个页面前进到下一个页面而改变。

有关如何做到这一点的细节,我会彻底约什 - 史密斯建议的文章:

WPF Apps With The Model-View-ViewModel Design Pattern

+0

谢谢,我会读这个,一个问题,我怎能认为blandability你的方法是什么? – ibm123 2012-01-16 10:17:01

+0

虽然您可能需要添加设计时数据,但MVVM会提升可混合性。如果我的回答有帮助,请注册或标记为答案。 – ColinE 2012-01-16 10:49:12

+0

谢谢,但我不知道如何添加设计时间数据,你能告诉我怎么样? – ibm123 2012-01-16 11:50:37