由于您在 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:
由于问题已被更改并以更好的方式构建,因此很明显您想了解 Applicationwide Theme-ing 。
您可以通过多种方式获得应用程序范围的主题,所以这里有一个:
这样您将拥有应用范围的主题。
您还可以从后面的代码中访问应用程序资源:
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,你可能需要稍微修改一下代码..
如果您需要保存此颜色并在下次用户打开应用程序时应用它,您需要将其保存到应用程序设置(或您可能维护的任何设置文件)并在加载应用程序时应用颜色更改代码。 .!