Как изменить шрифт текста диалога сообщений во время выполнения в uwp?

Я разрабатываю приложение для киосков для людей из разных стран, язык пользовательского интерфейса должен быть изменен во время выполнения.

ApplicationLanguages.PrimaryLanguageOverride Можно изменить текст и шрифт, отображаемый на страницах, но не влияет на содержимое в диалоговом окне сообщения; диалоговые окна всегда отображаются шрифтом для языка по умолчанию.

Некоторый язык не должен отображаться шрифтом для другого языка, так же как китайский текст не должен отображаться японским шрифтом.

Есть ли способ изменить шрифт диалога во время выполнения, так же, как ApplicationLanguages.PrimaryLanguageOverride свойство для страниц?

1 ответ

Моим решением было создать язык классов, определить там строку Lcid (вы можете гуглить, что такое LCID) и список строк текстов.

Создайте статический метод, который вернет вам все ваши тексты на разных языках и заполнит его:

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"
                }
            },
        };
    }
}

В вашем UserControl:

    private readonly List<Language> _languages = Language.GetLanguages();
    private List<string> _currentLanguageTexts = new List<string>();

Теперь вы можете переключать языки, сравнивая текущий LCID и устанавливая для текстов значение _currentLanguageTexts, которое должно быть x: Bind ed в вашем XAML.

Другие вопросы по тегам