2011-09-27 37 views
4

我正在使用的DevExpress工具WPF应用程序和以下MVVM模式..如何使用MVVM模式在Wpf应用程序上实现本地化?

我一直在使用Locbaml工具应用上定位和它的工作完美的罚款,但只是为了查看。

在这个应用程序我设置网格行Vlidation错误,并从视图模型中弹出一些消息框,但LocBaml看起来没有帮助转换这些错误消息和其他语言的消息框消息。我怎样才能做到这一点?

回答

0

直接从ViewModel获取消息框是错误的。相反,您应该提出事件并让视图执行UI。否则,你不能单元测试ViewModel,这是MVVM模式的主要目标之一。

+0

我不直接从视图模型pooping它我已经在视图中保留了messanger助手类,我只是在viewmodel中调用它,并在其中传递消息。我的问题是,我如何转换消息文本,我从视图模型中传递的选定语言自动像BamTool视图部分。 – Syeda

+0

好的,那么你可以直接从ViewModel传递消息,但是允许视图找到正确的消息并进行本地化。 –

0

如果您使用.resx文件来管理您的翻译,您可以简单地让它们生成代码(在.resx屏幕的组合框中使用Access Modifier:Public),然后让VM将消息直接发送到视图。

这样代码生成的资源文件的底层功能将返回所需文本的翻译版本。

+0

很好的解释。 – Amar

1

LocBaml只能从BAML,这是你的XAML文件的编译形式提取的东西。任何没有在xaml中定义的东西(例如,在代码隐藏中定义的字符串)永远不会被它看到。解决这个问题的唯一方法就是将所有可能需要本地化为字符串资源的字符串定义在xaml中。这些可以很容易地从代码隐藏引用,所以它没有听起来那么糟糕。完全动态生成的字符串将不可本地化,但通过一些工作,您可以从xaml资源中定义的片段构建它们。

0

你可以看看一些软件,我写这样做:

http://tap-source.com/?p=232

希望这有助于。

+1

虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分,并提供链接供参考。 – oers

相关问题