2011-03-10 118 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