2012-03-28 32 views
1

我试图去掌握MVVM模式,Silverlight和XAML。Silverlight中的MVVM数据持久性

我在这个阶段,我有一个主页,加载视图到一个框架。每个视图都可以绑定到其在xaml中的视图模型,然后绑定到视图模型数据。我还为像按钮点击和网格事件等(如SelectionChanged)触发命令。

当用户使用主页面导航菜单进行导航时,会将新视图加载到框架中,从而创建自己的视图模型的实例。

我的问题是,我的一个视图的viewmodel为某些数据调用WCF方法,然后通过绑定到viewmodel中的ObservableCollection将其显示在网格中。如果进行了更改,它只会调用一个保存WCF方法并传回此ObservableCollection。但是,当用户双击网格中的一条线时,我需要存储一些信息并将其保存到下一个视图(因为双击也会更改为不同的视图)。诸如“所选项目ID”之类的信息。

我最终得到的是一组“类型”的类,它们与视图模型分开,并保存应用程序状态和用户选择等。视图模型可以在这里存储事物,比如“选择的项目ID”。在我看来......“模型”几乎是WCF调用另一端的所有东西?我不认为我应该在这里创建另一个模型“图层”?

我不知道这种方法有什么问题,但感觉不对。

任何人都可以阐明我应该如何做到这一点?或者如果这是一个好方法?我误解了这里的模式吗?

感谢您的帮助!

回答

0

如果有工作流程,比如 - 你在一个viewmodel中设置'selection',并且你知道哪个viewmodel稍后会使用这个值 - 你也许可以使用EventAggregator方法并将事件发布到具有所需参数的另一个viewmodel,而不需要分开存储这个值。

+0

但是,需要了解信息的视图模型尚未实例化?只有当框架中的视图通过视图xaml更改时才会发生这种情况? – creatiive 2012-03-29 09:09:54

1

我想你已经在想这件事了。我认为这是一个好方法。如果您愿意,我认为可以合理接受“UI模型”。每个应用程序通常都有助手类。只要你采取“分离关注”的方式,那么你的应用程序将是可维护的。我的Silverlight应用程序有一个“模型”区域,可根据需要跟踪应用程序状态。该模型区域也具有特定于UI的类。 - 我的两分钱。