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();