在 UWP 应用中使用多个主题
Using multiple themes in UWP apps
我有一个多语言应用程序,它有两种样式,名为 RtlStyles
和 LtrStyles
,用于 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
布局事件)。
我有一个多语言应用程序,它有两种样式,名为 RtlStyles
和 LtrStyles
,用于 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
布局事件)。