想象一下您有一个复杂的数据对象。它足够复杂,以至于要编辑对象的各种属性,用户最好拥有多个屏幕。它本质上是一个配置项目的购物车。
因此,一个屏幕就可以让您添加项目。
另一种方法允许您对这些项目进行修改,即预先确定的更改,这些更改会产生相关成本。
第三个屏幕允许您配置项目的全局设置。
我相信您可以猜到,每个屏幕都在完全相同的购物车上运行,只是改变了内部物品的不同属性和关系。
因此,我们将尝试使用 MVVM 编写应用程序,在讨论各种屏幕(以及它们之间的导航)时,我们得出以下问题:
人们在使用 MVVM 时通常如何管理应用程序状态?用户用来切换屏幕的导航栏将存在于屏幕之外,但是当用户单击它时,人们使用哪些常见方式来隐藏一个并显示另一个?
更一般地说,人们如何处理全局应用程序状态?用户一次只能操作一辆购物车,一次只能有一个用户登录,一次只能显示一个屏幕。最好创建一个存储这些重要属性的单例,并且 ViewModel 可以保留它们的副本并通过事件聚合器订阅更改吗?
正如你所知,我什至不知道从哪里开始解决这个问题,所以任何建议都受到欢迎和赞赏。
我会使用 ViewModel 来跟踪应用程序状态。
一个 ViewModel 控制整个应用程序,并处理用户当前所在的页面。应用程序本身绑定到主 ViewModel,并且应用程序屏幕空间的大部分是绑定到 ViewModel.CurrentPage 的 ContentControl。然后使用 DataTemplates 确定为用户当前所在的任何页面显示哪个视图
过去,我对某些对象(例如当前用户)使用了全局单例,并且 ViewModel 在需要时使用对此的引用。因此,如果我想在页面上显示用户名,我会在 ViewModel 中有一个名为 UserName 的属性,它会返回Global.Instance.CurrentUser.UserName
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)