MVVM:如何维护所有视图模型都将使用的数据

本文关键字:模型 视图 数据 何维护 维护 MVVM | 更新日期: 2023-09-27 18:36:47

也许标题不是那么描述性。

我正在使用 Galasoft MVVM 框架,我意识到在我的应用程序中我一直需要或在视图模型中使用这些数据。

我需要的数据是这个身份验证模型

  • 用户名 : 字符串
  • 密码:字符串
  • 是客人:布尔

我想这不是一个好主意,也不是通过导航传递这些数据的最佳方式。

几个月前,我正在使用 Prism,我记得有一种叫做 Container 的东西,您可以在应用程序的整个生命周期中注册和保存对象。

我想到的另一种方法是将其保存在App类中,但我不确定这是否是一个好主意。

顺便说一下,我正在开发Metro UI应用程序。

MVVM:如何维护所有视图模型都将使用的数据

不要将数据存储在App中,因为它是视图的一部分。要使用它,您必须有效地从所有 ViewModel 引用视图。MVVM 的核心原则是模型只能访问

其他模型项,视图模型可以访问其他视图模型和模型,视图可以访问视图模型

您可以考虑以下几种选择

  1. 创建一个静态类 AuthenticationData,在其中初始化它
  2. 将身份验证数据传递给每个视图模型的构造函数
  3. 将身份验证数据存储在 IoC 容器中(GalaSoft 有一个 SimpleIoc 类)

如果使用IAuthenticationData接口,选项 2 和 3 可以更轻松地模拟身份验证数据以进行测试

对于身份验证,已经有一些东西可以使用。检查 IPrincipal/IIdentity 接口。身份验证后,这些将设置为Thread.CurrentThread.CurrentPrincipal,以后可以使用。

你所指的容器可能是Unity,它是一个IoC容器,GalaSoft也带有一个简单的容器。