想做成选择颜色后,更换窗体主题颜色
1、在App.xaml中记录当前颜色
<Application.Resources> <SolidColorBrush x:Key="color1" Color="White"></SolidColorBrush> </Application.Resources>
2、xaml中调用
<!-- 方法一--> <Window.Resources> <Style x:Key="firstColor" TargetType="Border"> <Setter Property="Background" Value="{DynamicResource color1}" /> </Style> </Window.Resources> <Border Style="{StaticResource firstColor}"></Border> <!-- 方法二--> <Border Style="{DynamicResource color1}"></Border>
3、选择颜色后修改,这里用的点击颜色后在后台修改(color是Brush类型)(这里的代码需要在window里,测试时不知道为什么写在page无效)
this.Resources.Remove("color1");(网上找的先移除再添加,后续测试直接赋值也行)
this.Resources.Add("color1", color);
或 this.Resources["color1"] = color;(直接赋值)
后台修改控件颜色(颜色Brush类型新建):
xxx.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF")); xxx.Background = new SolidColorBrush(Color.FromRgb(255, 255, 255)); xxx.Background = Brushes.White;
4、修改颜色方法在window,设置颜色在page时, wpf 子页面调用父窗口方法
参考:
WPF 界面主题颜色绑定切换(这个思路)
WPF动态改变主题颜色(和上个一样,还有RGB生成新颜色的)
WPF整理-使用用户选择主题的颜色和字体(这里没用到,根据操作系统主题变换颜色)
WPF 实现更换主题色(没看懂比较复杂)
-----------------------------------------------------------------------------------------------------------------------------------------------------------
到这里基本实现了,但页面颜色列表是固定的,后续想做成可以在线添加颜色的,改到最后在config保存了颜色,在前台循环显示
效果这样的颜色保存到在App.config
<appSettings> <add key="BackGroundColor" value="[{"Color1":"White","Color2":"White"}]"/> </appSettings>
标签:颜色,更改,主题,color1,wpf,WPF,Resources From: https://www.cnblogs.com/fangxinliu/p/16891565.html