WPF多国语言实现方案

MVVM模式就不必多讲了直接上代码

配置静态资源在App.xaml中

  <Application.Resources>
        <s:ApplicationLoader>
            <sys:Int32 x:Key="da">
                8
            </sys:Int32>
            <s:ApplicationLoader.Bootstrapper>
                <local:Bootstrapper />
            </s:ApplicationLoader.Bootstrapper>


            <s:ApplicationLoader.MergedDictionaries>
                <ResourceDictionary Source="./Styles/GlobalStyle.xaml" />
                <ResourceDictionary Source="./Styles/SplashStyle.xaml" />
                <ResourceDictionary Source="./Styles/LoginStyle.xaml" />
                <ResourceDictionary>
                    <XmlDataProvider
                        x:Key="Lang"
                        IsAsynchronous="False"
                        Source="Languages/zh.xml"
                        XPath="language/resources" />
                </ResourceDictionary>
            </s:ApplicationLoader.MergedDictionaries>
        </s:ApplicationLoader>

    </Application.Resources>

添加xml文件

<?xml version="1.0" encoding="utf-8" ?>
<language>
  <resources>
    <Splash_Title>启动</Splash_Title>
    <Splash_StatusDescription>启动中</Splash_StatusDescription>
  </resources>
</language>

界面绑定语言文字


            <Button
                Width="100"
                Height="50"
                Content="{Binding Source={StaticResource Lang}, XPath=Splash_Title}" />

后台初始化替换

    //单例创建view对应的语言数据
            LanguageContextService.Instance().Provider = System.Windows.Application.Current.TryFindResource("Lang") as XmlDataProvider;
            var lanSourcePath = $"../Languages/{"zh"}.xml";
            var lanUri = new Uri(lanSourcePath, UriKind.RelativeOrAbsolute);
            LanguageContextService.Instance().Provider.Source = lanUri;
            LanguageContextService.Instance().Provider.Refresh();

是不是很简单

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值