首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM光通信

MVVM光通信
EN

Software Engineering用户
提问于 2011-08-12 20:55:14
回答 1查看 760关注 0票数 3

我正在开发一个大型的MVVM应用程序。为此,我使用了MVVM工具包。应用程序就像一个带有后退和前进按钮的web浏览器。主视图是一个用户控件。我在主视图用户控件中放置了后退和前进按钮。主视图又有用户控件。当单击“后退”和“向前”按钮时,用户控件将发生更改。主ViewModel跟踪当前用户控件,并根据单击按钮加载下一个控件。

所有这些用户控件都根据第一步的选择(ID)加载。让我们说,主视图是一个搜索屏幕,我们选择一个客户。下一个屏幕将是地址、计费、请求等。这些屏幕不共享任何数据。但数据是给同一个客户的。

那么,在主视图中存储客户ID是一种良好的实践吗?如果我这样做,我应该有一个UserControl_Loaded事件绑定到一个命令,然后我将请求地址和计费信息。

或者,我可以将按钮(后退和向前按钮)移动到每个用户控件,而不是主视图,传递带有将加载下一个视图的消息的客户ID。

哪种更好些呢?

EN

回答 1

Software Engineering用户

发布于 2011-08-12 21:47:41

在你的主CustomerViewModel

  • Customer对象
  • ObservableCollection<ViewModelBase> CustomerSubViewModels
  • int CustomerSubViewModelIndex
  • BackCommand
  • ForwardCommand
  • ViewModelBase CurrentView,即返回CustomerSubViewModels[CustomerSubViewModelIndex]

您的主CustomerView将包含一个ContentControl,它的Content绑定到CurrentViewBack/Forward按钮将更改CustomerSubViewModelIndex +- 1,这反过来改变了CurrentView中显示的页面。DataTemplates将用于定义如何在ContentControl中绘制它们。

您的页面(如AddressesBillingRequests )都将存储在CustomerSubViewModels集合中,我将从CustomerViewModel中传递它们所需的Customer属性。它可以是一个类似于CustomerId的值,一个像Customer.Addresses这样的属性,甚至是整个Customer对象。我会用

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/100738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档