У меня есть многоязычное приложение с двумя стилями: RtlStyles и LtrStyles для языков RTL и LTR. Я определил свой стиль в App.xaml вот так:

<Application.Resources>
    <ResourceDictionary Source="Styles/RtlStyles.xaml"></ResourceDictionary>
</Application.Resources>

Но моя проблема в том, как изменить стиль на LtrStyles в коде позади?

1
N.Y 20 Фев 2016 в 11:13

2 ответа

Лучший ответ

Благодаря @Gaurav у меня есть небольшая обновленная информация о его ответе. Сначала я написал способ выбора тем:

public static void ChooseTheme()
{
        ResourceDictionary rd;
        if (CultureInfo.CurrentCulture.Name == "en-US")
            rd = new ResourceDictionary
            {
                Source = new Uri("ms-appx:///Styles/LtrStyles.xaml", UriKind.Absolute)
            };
        else
            rd = new ResourceDictionary
            {
                Source = new Uri("ms-appx:///Styles/RtlStyles.xaml", UriKind.Absolute)
            };

        Application.Current.Resources = rd;
}

И тогда мы можем использовать его везде (например, событие макета Page_Tapped).

1
N.Y 21 Фев 2016 в 05:37

В App.OnLaunched () вы можете попробовать что-то вроде этого:

    if (someCondition)
    {
        var rd = new ResourceDictionary
        {
            Source = new Uri("ms-appx:///Styles/RtlStyles.xaml", UriKind.Absolute)
        };
        Application.Current.Resources.MergedDictionaries.Add(rd);
    }
2
Gaurav 20 Фев 2016 в 11:53