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

时间:2012-06-11 22:57:25

标签: c# mvvm mvvm-light microsoft-metro

也许标题不那么具有描述性。

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

我需要的数据是验证模型

  • 用户名:字符串
  • 密码:字符串
  • IsGuest:bool

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

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

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

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

2 个答案:

答案 0 :(得分:1)

请勿将数据存储在App中,因为它是查看的一部分。要使用它,您实际上必须引用所有ViewModel中的View。 MVVM的核心原则是Model只能访问其他Model项,ViewModel可以访问其他ViewModel和Model,View可以访问ViewModels

您可以考虑几种选择

  1. 创建一个静态类AuthenticationData,用于初始化
  2. 将身份验证数据传递给每个视图模型的构造函数
  3. 将身份验证数据存储在IoC容器中(GalaSoft具有SimpleIoc类)
  4. 如果您使用IAuthenticationData界面

    ,则选项2和3可以更轻松地模拟您的身份验证数据以进行测试

答案 1 :(得分:0)

对于身份验证,您已经可以使用某些功能。检查IPrincipal / IIdentity接口。经过身份验证后,这些设置为Thread.CurrentThread.CurrentPrincipal,可以在以后使用。

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