所以我正在设计一个基于API响应动态主题的应用程序。我已经能够以编程方式为我的应用程序的其余部分设置资源字典中的颜色,但我试图找出如何设置获取按钮和AppBarButton悬停并单击颜色以适合我的配色方案。我以前通过在所需元素中硬编码RequestedTheme属性来改变它。
有没有办法将RequestedTheme属性绑定到我能够以编程方式设置的资源字典中的静态资源集?如果需要,我愿意以不同方式完成按钮的主题化,但是如果可能的话,我希望避免必须绑定到每个页面上的局部变量。
非常感谢!
答案 0 :(得分:1)
您可以定义自定义主题资源类,如下所示:
public enum MyTheme
{
//
// Summary:
// Use the Application.RequestedTheme value for the element. This is the default.
Default = 0,
//
// Summary:
// Use the **Light** default theme.
Light = 1,
//
// Summary:
// Use the **Dark** default theme.
Dark = 2
}
然后,在资源字典中,您可以定义不同的主题资源:
<Application.Resources>
<local:MyTheme x:Key="MyTheme">Light</local:MyTheme>
</Application.Resources>
在XAML页面中,您可以参考它:
<Button Content="test" RequestedTheme="{StaticResource MyTheme}"></Button>
然后,您可以使用以下命令更改代码中的值:
App.Current.Resources["MyTheme"] = isThemeDark ? "Dark" : "Light";