2012-04-12 17 views
0

我正在写一个桌面应用程序使用MVVM和Prism,我有以下问题。除了标签等,还需要以不同语言存储数据。用户会话使用不同的语言和MVVM

例如,在美国,用户可以使用英语或西班牙语(因为他们是母语)登录。

  • 如果使用西班牙语,当他们进入一个产品细节 用户登录形成产品说明会反对 西班牙语保存到数据库中。
  • 如果他们使用英语登录,产品说明将被保存到 数据库并与英语相关。

此刻我唯一的想法是如下: -
- 包含 CurrentLoggedInUser财产

我想知道什么是全球访问ApplicationViewModel是我如何去拯救当前登录用户使用MVVM时选择的语言,特别是在桌面应用程序中?
N.B所选择的语言可以在语言和区域设置,该操作系统是在

不同如何做其他人去解决这一点,并使用MVVM时,在不同的窗口/用户控件维护用户的“会话”?

回答

1

所有你需要做的就是将当前的语言存储在某个地方,可能是LCID

通常,这用于加载语言特定的资源文件,该文件处理大多数依赖语言的情况。控件等只是将所有字符串存储在资源中,所以它们不需要直接访问当前语言。

对于你确实需要访问语言的情况,比如知道在哪里保存你的数据库字符串,那么是的,这个语言应该被暴露,因为一些静态/单例,或者更理想的应该被注入任何ViewModels需要它。

+0

LCID对于显示本地化资源的语言来说是理想的,但对于这个问题,我更关心如何将当前登录用户的上下文置入视图模型。你是否暗示这可以通过在需要使用语言属性的每个视图模型中注入类似IUserContext的东西来完成?谢谢亚历克斯 – lostinwpf 2012-04-12 21:17:50

+0

这将是我首选的方式是。如果ViewModel需要这些信息,那么它需要从某个地方获取它。是的,如果你认为注入是不切实际的,你可以有一个静态的服务,但是注入远比单元测试更好。 – GazTheDestroyer 2012-04-13 07:39:18

+0

意思就是说,如果ViewModel只需要这种语言,那么只需要注入语言来防止不必要地将它与IUserContext结合起来。如果它需要用户上下文中的其他东西,那么显然注入整个上下文。 – GazTheDestroyer 2012-04-13 07:49:35