wpf 主题颜色更改

想做成选择颜色后,更换窗体主题颜色

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="[{&quot;Color1&quot;:&quot;White&quot;,&quot;Color2&quot;:&quot;White&quot;}]"/>
    </appSettings>    

前台,wpf ListBox循环显示颜色选择框

 

posted @ 2022-11-22 01:16  户的博客  阅读(2099)  评论(0编辑  收藏  举报