0

我正在为来自不同国家的人们开发一个信息亭应用程序,应该在运行时更改 UI 语言。

ApplicationLanguages.PrimaryLanguageOverride可以更改页面中显示的文本和字体,但对消息对话框中的内容没有影响,对话框始终以默认语言的字体显示。

某些语言不应以另一种语言的字体显示,就像中文文本不应以日文字体显示一样。

有没有办法在运行时更改对话框字体,就像ApplicationLanguages.PrimaryLanguageOverride页面的属性一样?

4

1 回答 1

0

我的解决方案是创建一个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来切换语言。

于 2016-12-27T08:27:48.670 回答