日期:2014-05-17  浏览次数:20923 次

WPF 多语言支持该怎么做

网上搜了下,找到的资料全部都是介绍用“资源字典”来做多语言支持。我自己尝试了下,也确实是相当地方便。但是目前遇到难题没办法解决了:

当做UI界面时,这个资源字典用xaml语言引用倒是挺方便的。 但是内部访问时,却怎么也找不到对应的方法。如果在 viewmodels 中,需要弹出提示框,这时如何引用资源字典中定义的字符串呢? 谢谢

------解决方案--------------------
弹出信息的多语言可以用.net本身的Resource文件。这样相当于有两个字典,一个是xaml用的,另外一个是vm的代码里用的。
或者不用wpf提供的MessageBox,而是自己创建一个Window作为MessageBox,这样就可以只用一套给xaml用的字典了。
------解决方案--------------------
通过创建不同语言版本的资源文件,如:zh-CN.xaml,en.xaml,文件里内容格式一般为
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">

    <sys:String x:Key="btn_Ok" >
        确定
    </sys:String>
    <sys:String x:Key="btn_Delete">
        删除
    </sys:String>
   <sys:String x:Key="btn_Back" >
        返回
    </sys:String>
</ResourceDictionary> 
在程序启动时进行判断读取相关版本的资源文件内容。希望对你有所帮助