我正在为来自不同国家的人们开发一个信息亭应用程序,应该在运行时更改 UI 语言。
ApplicationLanguages.PrimaryLanguageOverride
可以更改页面中显示的文本和字体,但对消息对话框中的内容没有影响,对话框始终以默认语言的字体显示。
某些语言不应以另一种语言的字体显示,就像中文文本不应以日文字体显示一样。
有没有办法在运行时更改对话框字体,就像ApplicationLanguages.PrimaryLanguageOverride
页面的属性一样?
我正在为来自不同国家的人们开发一个信息亭应用程序,应该在运行时更改 UI 语言。
ApplicationLanguages.PrimaryLanguageOverride
可以更改页面中显示的文本和字体,但对消息对话框中的内容没有影响,对话框始终以默认语言的字体显示。
某些语言不应以另一种语言的字体显示,就像中文文本不应以日文字体显示一样。
有没有办法在运行时更改对话框字体,就像ApplicationLanguages.PrimaryLanguageOverride
页面的属性一样?
我的解决方案是创建一个Class Language,在那里定义一个字符串 Lcid(你可以用谷歌搜索什么是 LCID)和List of strings Texts。
创建一个静态方法,它将以不同的语言返回您的所有文本并填充它:
public class Language
{
public string Lcid { get; set; }
public List<string> Texts { get; set; }
public static List<Language> GetLanguages()
{
return new List<Language>
{
new Language
{
Lcid = "uk",
Texts = new List<string>
{
"Привіт",
"Бувай"
}
},
new Language
{
Lcid = "en",
Texts = new List<string>
{
"Hello",
"Bye"
}
},
};
}
}
在您的用户控件中:
private readonly List<Language> _languages = Language.GetLanguages();
private List<string> _currentLanguageTexts = new List<string>();
现在,您可以通过比较当前 LCID 并将Texts设置为XAML中应为x:Bind的_currentLanguageTexts来切换语言。