EverythingUI.WPF 使用统一的渐变颜色系统,所有控件支持垂直三色渐变效果:
起始色(Offset 0) → 中间色(Offset 0.5) → 起始色(Offset 1)
配合全局统一的白色光泽层(GlossBrush),实现玻璃拟物化立体效果。
所有支持光泽的控件共享同一个光泽层画刷资源,定义在 Styles/GradientColors.xaml:
<LinearGradientBrush x:Key="GlossBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="#CCFFFFFF"/> <!-- 80% 白色 -->
<GradientStop Offset="1" Color="#33FFFFFF"/> <!-- 20% 白色 -->
</LinearGradientBrush>| 属性 | 值 |
|---|---|
| 渐变方向 | 垂直(Top → Bottom) |
| 渐变类型 | 二段式 |
| 起始色 | #CCFFFFFF(80% 白色) |
| 结束色 | #33FFFFFF(20% 白色) |
| 高度 | 容器高度的 50%(通过 HalfHeightConverter) |
| 对齐方式 | VerticalAlignment="Top" |
| 引用方式 | {DynamicResource GlossBrush} |
| 控件 | 说明 |
|---|---|
| EverythingButton | 按钮表面半高光泽 |
| EverythingCheckBox | 选中状态时显示光泽 |
| EverythingRadioButton | 选中状态时显示光泽 |
| EverythingComboBox | 下拉按钮表面光泽 + 下拉选中项光泽(Opacity=0.6) |
| EverythingToggleSwitch | 开启状态轨道光泽 |
| EverythingSideBar | 选中滑动指示器光泽(跟随动画) |
| EverythingToolBar | 工具栏选中浮动指示器光泽,固定半透明显示(Opacity=0.6) |
| EverythingSlider | 轨道 + 滑块两处光泽 |
| EverythingProgressBar | 进度填充区域顶部光泽 + 扫光效果 + 阻力感宽度动画 |
- EverythingTextBox — 文本框使用无光泽层的内阴影样式
- EverythingCircularProgressBar — 圆弧进度条不需要光泽增强,使用渐变圆弧与阻力感进度动画
- EverythingCard — 卡片容器不需要光泽增强
- EverythingIconListBox — 图标列表项使用浮动指示器内联光泽
- EverythingScrollBar — 滚动条有独立的拟物化样式体系
- EverythingOverlayDialog — 全屏遮罩对话框使用固定黑色遮罩、动画与毛玻璃效果
ThemeManager 提供全局主题颜色切换功能,支持运行时动态变更所有控件的主题色。
核心 API:
// 切换全局主题颜色(所有控件自动响应)
ThemeManager.ChangeColor(ColorName.Red);
// 获取当前颜色名称
var current = ThemeManager.CurrentColorName;
// 订阅颜色变更事件
ThemeManager.ColorChanged += (sender, colorName) =>
{
Console.WriteLine($"主题已切换为: {colorName}");
};默认颜色由 ColorHelper 统一管理,作为全局主题、控件属性及回退值的唯一来源,避免硬编码分散:
// ColorHelper 提供的默认颜色常量与属性
ColorHelper.DefaultColorName // 默认颜色名称(ColorName.Blue)
ColorHelper.DefaultGradientStartColor // 默认渐变起始色
ColorHelper.DefaultGradientEndColor // 默认渐变结束色
ColorHelper.DefaultTrackColor // 默认轨道色应用启动时通过 ThemeManager.Initialize 指定默认主题颜色,所有控件将自动响应:
// 使用库默认颜色(ColorHelper.DefaultColorName)
ThemeManager.Initialize();
// 或自定义默认颜色(如青色)
ThemeManager.Initialize(ColorName.Cyan);修改 ColorHelper.DefaultColorName 即可全局调整默认颜色,无需在各处同步硬编码值。
| 颜色名称 | 起始色 | 中间色 |
|---|---|---|
| 蓝色(默认) | #00ACF0 |
#0078D4 |
| 红色 | #FF5833 |
#D43030 |
| 绿色 | #A0D605 |
#19A654 |
| 橙色 | #FFC300 |
#FF8D1A |
| 黑色 | #808080 |
#383838 |
| 灰色 | #E5E5E5 |
#A6A6A6 |
| 白色 | #FFFFFF |
#E6E6E6 |
| 黄色 | #FFEB3B |
#FFC400 |
| 青色 | #00BAAD |
#00998F |
| 紫色 | #AC33C1 |
#8D2C9E |
| 粉色 | #F7D7EC |
#FF9CDB |
| 颜色名称 | 起始色 | 中间色 |
|---|---|---|
| 靛蓝 | #5B7FFF |
#4A6BE5 |
| 天蓝 | #38BDF8 |
#0EA5E9 |
| 翠绿 | #34D399 |
#10B981 |
| 玫瑰 | #FB7185 |
#E11D48 |
| 琥珀 | #FBBF24 |
#D97706 |
| 蓝紫 | #8B5CF6 |
#7C3AED |
| 珊瑚 | #FF7F7F |
#FF5252 |
| 薄荷 | #6EE7B7 |
#34D399 |
<!-- 文字颜色 -->
<SolidColorBrush x:Key="TextPrimaryBrush" Color="#1F2937"/>
<SolidColorBrush x:Key="TextSecondaryBrush" Color="#6B7280"/>
<!-- 背景颜色 -->
<SolidColorBrush x:Key="CardBackgroundBrush" Color="#FFFFFF"/>
<SolidColorBrush x:Key="Gray100Brush" Color="#F3F4F6"/>
<SolidColorBrush x:Key="Gray200Brush" Color="#E5E7EB"/>
<SolidColorBrush x:Key="Gray300Brush" Color="#D1D5DB"/>值转换器,将绑定的高度值减半,用于光泽层实现半高效果:
Height="{Binding ActualHeight, RelativeSource={RelativeSource TemplatedParent},
Converter={x:Static controls:HalfHeightConverter.Instance}}"圆弧几何生成辅助类,用于圆形进度条控件。模板不再使用转换器绑定,控件代码会在 AnimatedValue 变化时调用该辅助类逐帧生成圆弧:
- 输入:当前动画值、最小值、最大值、控件直径、线条粗细
- 输出:
Geometry对象(PathGeometry或EllipseGeometry) - 特殊处理:0% 返回空几何,100% 返回完整椭圆,半径按
StrokeThickness自动内缩
| 场景 | 推荐颜色 |
|---|---|
| 主要操作 | 蓝色(默认) |
| 成功/确认 | 绿色 |
| 警告/注意 | 橙色、黄色 |
| 危险/删除 | 红色 |
| 次要操作 | 灰色、黑色 |
| 特殊功能 | 紫色、粉色 |
| 清新/信息 | 青色、天蓝 |