在 UWP 应用中使用多个主题

Using multiple themes in UWP apps

我有一个多语言应用程序,它有两种样式,名为 RtlStylesLtrStyles,用于 RTL 和 LTR 语言。 我在 App.xaml 中定义了我的风格,如下所示:

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

但我的问题是如何在代码隐藏中将样式更改为 LtrStyles

在App.OnLaunched()中,你可以尝试这样的操作:

    if (someCondition)
    {
        var rd = new ResourceDictionary
        {
            Source = new Uri("ms-appx:///Styles/RtlStyles.xaml", UriKind.Absolute)
        };
        Application.Current.Resources.MergedDictionaries.Add(rd);
    }

感谢@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 布局事件)。