0

也许标题没有那么描述性。

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

我需要的数据是这个认证模型

  • 用户名:字符串
  • 密码:字符串
  • IsGuest : 布尔值

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

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

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

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

4

2 回答 2

1

不要将数据存储在 中,App因为它是View的一部分。要使用它,您必须有效地从所有 ViewModel 中引用 View。MVVM 的一个核心原则是 Model(s) 只能访问其他 Model 项,ViewModel 可以访问其他 ViewModel 和 Model,而 View 可以访问 ViewModel

您可以考虑几种选择

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

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

于 2012-06-12T01:37:08.977 回答
0

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

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

于 2012-06-12T03:43:34.437 回答