2011-03-10 123 views
0

我使用此線程的多語言解決方案Multilanguage in WPF 但我有自動問題更改語言後資源刷新的問題。 舊的字符串保持舊的語言,新的屬性遍歷。WPF資源刷新問題

什麼是最簡單的解決方案來解決這個問題,例如刷新應用程序中的所有資源?

回答

2

我也使用過本地化。問題在於你的應用程序運行時在文化信息中所做的更改,不會顯示在UI中。這些控件的值確實發生了變化,但不會將更改通知給控件的UI。就我一直在Google上搜索這一點而言,我還沒有找到適用於離線應用程序的合理解決方案。即使InitializeComponents沒有做到這一點。

唯一的解決方案,雖然我不太喜歡那個,但是要改變文化,然後啓動一個批處理,然後用選定的文化信息關閉並重新啓動應用程序。

我不喜歡這個的原因是因爲你依賴外部文件(批處理),並不是所有的應用程序都可以像這樣重新啓動。但它可能會訣竅。

0

我發現的最簡單的解決方案是簡單地重新打開窗口 - 如果您使用MVVM,所有狀態(或重要狀態)都保存在ViewModel中,並且只刷新視圖。

我還沒有使用過鏈接到的擴展名,但是這些更高級的系統中的任何一個都應該自動處理刷新。就我而言,我只是使用{x:Static res:ResourceName}引用資源,並在語言更改時刷新視圖。當然,我不允許在更復雜的屏幕上更改語言...... :)

+0

1.我無法重新打開窗戶; 2.我在托盤菜單中遇到同樣的問題;您的解決方案將重新打開應用程序。 – Svisstack 2011-03-10 20:32:00

+0

當然,我的解決方案適用於我的情況;你鏈接到的擴展在其codeplex頁面中提到「將語言切換到運行時會影響NO時間片」,但我不會說那種語言,不能真正知道它是否應該支持動態地改變語言。在切換到靜態資源引用之前,我確實使用過類似的產品,並且更改語言的確行得通,但執行得並不好,我放棄了。你應該把它和該產品的作者一起提交,因爲他們應該能夠提出解決方案 - 實際上這應該是我一直以來的答案。 – 2011-03-10 20:42:09