应用主题的最简单方法是什么

What is the simplest way to apply themeing

假设我有一个 ResourceDictionary:

更新:

<SolidColorBrush x:Key="AquaBrush" Color="#257D8E"/> 

<SolidColorBrush x:Key="GreenBrush" Color="Green"/>

假设这是我的应用程序:

我有一个包含项目(浅绿色、绿色和灰色)的组合框 当我 select 浅绿色按钮时,它应该显示如下: 我要设置的按钮和其他控件也应该将其背景更新为浅绿色。

我如何才能将 SplitView 、 Button 和其他控件的背景绑定到一个 属性 并且当我 select "aqua" 时它将使用 "AquaBrush" 以及何时我select"Green",会用"GreenBrush"吗?

谢谢。

由于您在 XAML 中定义了 SolidColorBrush 资源,因此您可以从后台代码执行此操作,以便在运行时根据条件更改背景颜色:

if(Some Condition){
    relativePanelName.Background = (SolidColorBrush)Resources["NavPaneBackgroundBrushBlue"];
}else {
    relativePanelName.Background = (SolidColorBrush)Resources["NavPaneBackgroundBrushGreen"];
}

希望这对您有所帮助..!


编辑:

此外,您不仅可以定义自己的静态资源,还可以使用系统的theme resources .

例如,您可以像这样访问系统的强调色:

C#

var color = (Color)this.Resources["SystemAccentColor"];

Xaml

<Grid.Background>
   <SolidColorBrush Color="{StaticResource SystemAccentColor}"/>
</Grid.Background>

编辑 2: 由于问题已更改并以更好的方式构建,很明显您想了解 Application wide Theme-ing 。 您可以通过多种方式获得应用程序范围的主题,所以这里是一个:

  • 在你里面定义一个应用资源App.Xaml这样 通过您的应用程序可用。

  • 现在这些资源将在所有 pages.You 中可用,可以像这样访问它们:

这样您将拥有应用程序范围的主题。

您还可以从隐藏代码访问应用程序资源:

gridName.Background=new SolidColorBrush((Color)Application.Current.Resources["ColorThree"]);

编辑 3 :

在你里面 app.xaml :

<ResourceDictionary>
            <Color x:Key="ThemeColor">#f4425f</Color>
            <SolidColorBrush x:Key="UserAccentBrush" Color="{StaticResource ThemeColor}"/>
</ResourceDictionary>

单击您的按钮只需更改 "UserAccentBrush" 的颜色,它将反映在所有使用画笔的控件中..

private void Button_Click(object sender, RoutedEventArgs e)
{
    var brush = (SolidColorBrush)Application.Current.Resources["UserAccentBrush"];

            if (cb.SelectedIndex != -1)
            {
                switch (cb.SelectedIndex)
                {
                    case 0:
                        brush.Color = Color.FromArgb(255, 242, 101, 34);
                        break;

                    case 1:
                        brush.Color = Color.FromArgb(255, 232, 10, 90);
                        break;
                }
            }
}

请注意,我是直接使用application.current.resources,您可能需要稍微修改一下代码..

如果您需要保存此颜色并在用户下次打开应用程序时应用它,您需要将其保存到应用程序设置(或您可能正在维护的任何设置文件)并在应用程序加载时应用颜色更改代码..!