2012-04-12 18 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