首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF - MVVM屏幕管理

WPF - MVVM屏幕管理
EN

Stack Overflow用户
提问于 2011-02-17 02:57:11
回答 2查看 2.6K关注 0票数 2

假设你有一个复杂的数据对象。要编辑对象的各种属性,用户最好有多个屏幕,这已经足够复杂了。它本质上是一个配置项目的购物车。

因此,一个屏幕将允许您添加项目。另一种方法是允许您添加对这些项目的修改,即具有关联成本的预先确定的更改。第三个屏幕将允许您为您的项目配置全局设置。

我相信你可以猜到,每个屏幕都在完全相同的购物车上运行,只是改变了其中项目的不同属性和关系。

因此,我们将尝试使用MVVM编写应用程序,在讨论各种屏幕(以及它们之间的导航)时,我们遇到了以下问题:

在使用MVVM时,人们通常如何管理应用程序状态?用户将用来更改屏幕的导航栏将存在于屏幕之外,但是当用户单击它时,人们通常使用什么方法来隐藏一个和显示另一个?

更广泛地说,人们是如何处理全局应用程序状态的?用户一次只能操作一个购物车,一次只能有一个用户登录,一次只能显示一个画面。最好是创建一个单例来存储这些重要属性,并且ViewModels可以保留这些属性的副本,并通过事件聚合器订阅更改?

如你所知,我几乎不知道从哪里开始解决这个问题,所以任何建议都是受欢迎的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-17 03:03:59

我将使用ViewModels来跟踪应用程序状态。

一个ViewModel控制整个应用程序,并处理用户当前所在的页面。应用程序本身绑定到主ViewModel,应用程序屏幕空间的大部分是绑定到ViewModel.CurrentPage的ContentControl。然后使用DataTemplates来确定为用户当前所在页面显示哪个视图

在过去,我对一些对象(比如current user)使用全局单例,如果需要,ViewModels会使用对它的引用。因此,如果我想在页面上显示UserName,我应该在ViewModel中有一个名为UserName的属性,它将返回Global.Instance.CurrentUser.UserName

票数 3
EN

Stack Overflow用户

发布于 2011-02-17 03:12:11

对于你的情况,我会研究一下PRISM。PRISM是一组模式,用于以松散耦合的MVVM方式开发WPF应用程序。

具体地说,对于多屏幕和管理应用程序状态的示例,使用“控制器”将ViewModel (购物车)的各种表示形式的视图加载到单独的“区域”中可能是一个很好的开始。在MSDN上看起来有一篇关于getting started with PRISM的很棒的文章,包括composing user interfaces (区域)。

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

https://stackoverflow.com/questions/5020812

复制
相关文章

相似问题

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