当前位置: 首页 > article >正文

Themes 与 Styles

Themes 与 Styles主题目录Source/Themes项目说明H.Theme主题核心。H.Themes.Colors.Accent强调色。H.Themes.Colors.Blue蓝色。H.Themes.Colors.Copper铜色/复古。H.Themes.Colors.Gray灰色。H.Themes.Colors.Industrial工业风。H.Themes.Colors.Mineral矿物色。H.Themes.Colors.PlatformApple、FluentUI、MaterialDesign。H.Themes.Colors.Purple紫色。H.Themes.Colors.Solid纯色。H.Themes.Colors.Technology科技风。H.Themes.Colors.WebAntDesignPro、Bootstrap、LayUI、WeUI。样式目录Source/Styles项目作用H.Style默认样式核心。H.Styles.BootstrapBootstrap 风格样式。WPF-Control 大量使用ResourceDictionaryDynamicResourceStaticResourceStyleControlTemplateThemes/Generic.xaml常见窗口样式Style{DynamicResource {x:Static WindowKeys.Default}}这代表样式来自资源字典并且可以随主题动态变化。Themes 与 Styles 主题样式系统详解一、主题样式系统概述WPF-Control 的主题样式系统负责管理应用的外观和视觉效果通过资源字典实现主题切换和样式复用。核心思想将颜色、字体、布局等视觉元素抽象为可配置的资源支持动态切换。二、主题系统架构2.1 主题项目结构Source/Themes/ ├── H.Theme/ # 主题核心 │ ├── Colors/ # 颜色资源 │ │ ├── Light.xaml # 浅色主题 │ │ ├── Dark.xaml # 深色主题 │ │ └── ColorThemeType.cs # 主题类型枚举 │ ├── Backgrounds/ # 背景资源 │ ├── FontSizes/ # 字体大小 │ └── Layouts/ # 布局资源 ├── H.Themes.Colors.Blue/ # 蓝色主题 ├── H.Themes.Colors.Gray/ # 灰色主题 ├── H.Themes.Colors.Purple/ # 紫色主题 ├── H.Themes.Colors.Platform/ # 平台风格Apple、FluentUI、MaterialDesign └── H.Themes.Colors.Web/ # Web风格AntDesignPro、Bootstrap、LayUI2.2 颜色主题分类主题项目风格特点适用场景Blue清爽蓝色调通用企业应用Copper复古铜色调艺术类应用Gray简洁灰色调专业工具类Industrial工业金属风工业软件Mineral矿物自然色设计类应用Platform平台风格跨平台应用Purple优雅紫色调创意类应用Solid纯色简洁简约风格Technology科技感科技产品WebWeb框架风格Web迁移应用三、核心概念3.1 ResourceDictionary资源字典资源字典是 WPF 中管理资源的核心机制ResourceDictionary!-- 颜色资源 --Colorx:KeyPrimaryColor#2D80FF/Color!-- 画笔资源 --SolidColorBrushx:KeyPrimaryBrushColor{StaticResource PrimaryColor}/!-- 样式资源 --Stylex:KeyButtonStyleTargetTypeButtonSetter PropertyBackgroundValue{StaticResource PrimaryBrush}//Style/ResourceDictionary3.2 DynamicResource vs StaticResource特性StaticResourceDynamicResource加载时机编译时运行时性能更快稍慢动态更新不支持支持适用场景固定资源主题切换3.3 ComponentResourceKey组件资源键用于跨程序集共享资源!-- 定义资源 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.Accent, TypeInTargetAssembly{x:Type local:ColorKeys}}#2D80FF/Color!-- 使用资源 --SolidColorBrushColor{DynamicResource {ComponentResourceKey ResourceIdS.Color.Accent, TypeInTargetAssembly{x:Type local:ColorKeys}}}/四、颜色系统详解4.1 浅色主题Light.xaml!-- 背景色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.CaptionBackground, ...}#f5f5f5/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.TextBackground, ...}#FFFFFF/Color!-- 前景色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.TextForeground, ...}#606266/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.TextForeground.Title, ...}#000000/Color!-- 边框色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.TextBorderBrush, ...}#ebebeb/Color4.2 深色主题Dark.xaml!-- 背景色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.CaptionBackground, ...}#191a20/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.TextBackground, ...}#121317/Color!-- 前景色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.TextForeground, ...}#FF8F939C/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.TextForeground.Title, ...}#ffffff/Color!-- 边框色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.TextBorderBrush, ...}#2e313b/Color4.3 颜色键命名规范前缀含义示例S.Color.基础颜色S.Color.Red,S.Color.BlueS.Color.Caption标题栏颜色S.Color.CaptionBackgroundS.Color.Text文本相关颜色S.Color.TextForegroundS.Color.Dark.N灰度颜色N为0-28S.Color.Dark.10五、样式系统详解5.1 样式项目结构Source/Styles/ ├── H.Style/ # 默认样式核心 │ ├── Controls/ # 控件样式 │ │ ├── Button.xaml │ │ ├── TextBox.xaml │ │ ├── Window.xaml │ │ └── ... │ ├── Share.xaml # 共享资源 │ └── Themes/ │ └── Generic.xaml # 默认样式入口 └── H.Styles.Bootstrap/ # Bootstrap风格5.2 控件样式示例!-- Button.xaml --StyleTargetTypeButtonSetter PropertyBackgroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextBackground, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ Setter PropertyForegroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextForeground, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ Setter PropertyBorderBrushValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextBorderBrush, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ Style.Triggers Trigger PropertyIsMouseOverValueTrue Setter PropertyBackgroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextMouseOver, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ /Trigger Trigger PropertyIsPressedValueTrue Setter PropertyBackgroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextSelected, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ /Trigger /Style.Triggers/Style5.3 窗口样式!-- Window.xaml --Stylex:Key{ComponentResourceKey ResourceIdWindowKeys.Default, TypeInTargetAssembly{x:Type local:WindowKeys}}TargetTypeWindowSetter PropertyBackgroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextBackground, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ Setter PropertyForegroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextForeground, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ Setter PropertyBorderBrushValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.TextBorderBrush.Title, TypeInTargetAssembly{x:Type local:ColorKeys}}}//Style六、主题切换机制6.1 主题类型枚举publicenumColorThemeType{[Display(Name常规)]Default0,[Display(Name深色)]Dark,[Display(Name浅色)]Light}6.2 主题加载流程1. 用户选择主题 │ ▼ 2. 调用主题切换服务 │ ▼ 3. 加载对应主题的 ResourceDictionary │ ▼ 4. 合并到 Application.Resources │ ▼ 5. DynamicResource 自动更新UI6.3 使用示例// 切换到深色主题Ioc.GetServiceILoadThemeOptionsService().Load(ColorThemeType.Dark);// 切换到浅色主题Ioc.GetServiceILoadThemeOptionsService().Load(ColorThemeType.Light);6.4 XAML 中使用动态资源!-- 颜色 --ButtonBackground{DynamicResource {ComponentResourceKey ResourceIdS.Color.Accent, TypeInTargetAssembly{x:Type local:ColorKeys}}}/!-- 样式 --WindowStyle{DynamicResource{ComponentResourceKey ResourceIdWindowKeys.Default, TypeInTargetAssembly{x:Typelocal:WindowKeys}}}/七、自定义主题7.1 创建自定义颜色主题步骤1创建颜色资源文件!-- CustomTheme.xaml --ResourceDictionaryxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation!-- 自定义颜色 --Colorx:Key{ComponentResourceKey ResourceIdS.Color.Accent, TypeInTargetAssembly{x:Type local:ColorKeys}}#FF6B8E23/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.CaptionBackground, TypeInTargetAssembly{x:Type local:ColorKeys}}#F5F5DC/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.TextBackground, TypeInTargetAssembly{x:Type local:ColorKeys}}#FFFFFF/ColorColorx:Key{ComponentResourceKey ResourceIdS.Color.TextForeground, TypeInTargetAssembly{x:Type local:ColorKeys}}#333333/Color/ResourceDictionary步骤2注册主题publicstaticclassCustomThemeExtension{publicstaticIServiceCollectionAddCustomTheme(thisIServiceCollectionservices){services.TryAddSingletonIThemeResource,CustomThemeResource();returnservices;}}7.2 创建自定义样式!-- CustomButtonStyle.xaml --ResourceDictionaryStylex:KeyCustomButtonTargetTypeButtonSetter PropertyPaddingValue12,6/ Setter PropertyBorderRadiusValue8/ Setter PropertyBackgroundValue{DynamicResource {ComponentResourceKey ResourceIdS.Color.Accent, TypeInTargetAssembly{x:Type local:ColorKeys}}}/ Style.Triggers Trigger PropertyIsMouseOverValueTrue Setter PropertyOpacityValue0.9/ /Trigger /Style.Triggers/Style/ResourceDictionary八、最佳实践8.1 资源引用规范// ✅ 推荐使用 DynamicResource 支持主题切换Background{DynamicResource {ComponentResourceKey ResourceIdS.Color.Accent, ...}}// ❌ 不推荐硬编码颜色Background#FF6B8E238.2 样式优先级1. 内联样式Inline │ ▼ 2. 控件级样式Style 属性 │ ▼ 3. 页面级资源Window.Resources │ ▼ 4. 应用级资源Application.Resources │ ▼ 5. 主题资源Themes/Generic.xaml8.3 性能优化// ✅ 推荐使用 StaticResource 提高性能非主题资源SolidColorBrushx:KeyStaticBrushColor{StaticResource MyColor}/// ✅ 推荐使用 DynamicResource 支持主题切换SolidColorBrushx:KeyDynamicBrushColor{DynamicResource S.Color.Accent}/九、总结主题样式系统是 WPF-Control 的外观核心主题分类丰富支持浅色、深色、蓝色、紫色等多种主题动态切换通过 DynamicResource 实现主题实时切换跨程序集共享使用 ComponentResourceKey 共享资源高度可定制支持自定义主题和样式性能优化区分 StaticResource 和 DynamicResource掌握主题样式系统可以打造视觉效果出色的 WPF 应用。

相关文章:

Themes 与 Styles

Themes 与 Styles 主题目录:Source/Themes项目说明H.Theme主题核心。H.Themes.Colors.Accent强调色。H.Themes.Colors.Blue蓝色。H.Themes.Colors.Copper铜色/复古。H.Themes.Colors.Gray灰色。H.Themes.Colors.Industrial工业风。H.Themes.Colors.Mineral矿物色。H…...

为内容生成平台构建支持多模型备选的 AI 中台

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内容生成平台构建支持多模型备选的 AI 中台 在内容创作领域,无论是自媒体运营还是营销团队,对文本生成的…...

SX1255和AD9361的LO泄露实测对比:为什么你的无线模块EVM总是不达标?

SX1255与AD9361本振泄露实战分析:破解EVM不达标的三大关键策略 在调试LoRa模块或小型基站射频前端时,工程师们最常遇到的"幽灵问题"莫过于EVM指标莫名劣化。上周深夜,当我的频谱仪上再次出现那个熟悉的载波泄露尖峰时,我…...

【Qt学习】Windows上环境配置与项目初识

文章目录环境配置下载与安装环境变量设置查看示例程序Qt Creator界面说明快捷键项目帮助构建模式编码中文问题创建第一个Qt项目创建项目项目文件程序入口本文参照视频学习记录: https://www.bilibili.com/list/watchlater?oid970696801&bvidBV1Jp4y167R9视频中…...

告别Excel!用Python复现地理探测器(附完整代码与示例数据)

告别Excel!用Python复现地理探测器(附完整代码与示例数据) 地理探测器作为分析空间分异性的重要工具,长期以来依赖Excel插件实现计算。但对于需要批量处理、自定义分析流程的研究者而言,这种封闭式操作存在明显局限。…...

微信小程序互助交流

微信小程序互助群 你开发了一个微信小程序, 准备接广告, 卡在了 500 个 UV 这里, 想找大佬帮忙,结果大佬说要收一张费—— 于是我建了一个微信群, 大家互助,免费入群,入群条件: 每人…...

【ElevenLabs老挝文语音实战指南】:2024年唯一经实测验证的8步本地化语音合成落地方案

更多请点击: https://kaifayun.com 第一章:ElevenLabs老挝文语音合成的技术背景与本地化价值 ElevenLabs 作为全球领先的AI语音生成平台,长期聚焦于高保真、情感化多语言语音合成技术。尽管其支持语言列表持续扩展,老挝文&#x…...

Vibe Coding 实战:我用一条 Prompt 指挥 AI “盲盒式”生成 3D 积木物理世界

🚀 Vibe Coding 实战:我用一条 Prompt 指挥 AI “盲盒式”生成 3D 积木物理世界)一、 引言:欢迎来到 Vibe Coding 时代1.1 什么是 Vibe Coding?从“一行行敲代码”到“用直觉与语义编程”的范式转变1.2 为什么选择 3D …...

别再手动复制文件了!Mathtype 7.4 一键配置脚本,搞定Office和WPS(附常见错误修复)

数学公式编辑神器Mathtype 7.4全自动部署方案:告别手动配置的繁琐时代 在科研论文、技术文档撰写过程中,数学公式的编辑效率直接影响工作进度。Mathtype作为专业数学公式编辑工具,其强大功能常被手动配置的复杂步骤所掩盖。传统方法需要用户反…...

ElevenLabs台湾话语音上线后用户留存率骤降47%?揭秘方言语料清洗盲区与3步合规性校验法

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs台湾话语音上线后用户留存率骤降47%?揭秘方言语料清洗盲区与3步合规性校验法 ElevenLabs于2024年Q2正式上线台湾话(闽南语)语音合成服务,初期D…...

【限时解密】ElevenLabs未公开的瑞典文语料权重配置表:仅限前200名开发者获取的/sv-SE/声道微调参数

更多请点击: https://codechina.net 第一章:瑞典文语音合成的技术背景与ElevenLabs架构定位 瑞典语作为北日耳曼语支的重要语言,拥有丰富的元音系统(9个长元音、9个短元音)、独特的声调重音(accent 1 和 a…...

2026年福建莆田大平层全屋高端定制选型指南

一、引言福建莆田近年来经济发展迅速,居民生活水平不断提高,大平层住宅逐渐成为高端改善型住房的热门选择。在全屋高端定制方面,消费者面临着众多品牌的选择。本指南旨在为莆田的大平层业主提供一份合规、靠谱且适配自身需求的高端定制品牌选…...

Midjourney盐印相风格实战手册(附12组可复用Prompt模板+SDXL交叉验证数据)

更多请点击: https://kaifayun.com 第一章:Midjourney盐印相风格的视觉溯源与美学内核 盐印相(Salted Paper Print)是19世纪早期摄影术诞生之初的核心工艺,由亨利福克斯塔尔博特于1839年系统完善。其本质是将纸基浸入…...

HS2汉化补丁终极解决方案:15分钟快速上手完整指南

HS2汉化补丁终极解决方案:15分钟快速上手完整指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日语界面而烦恼吗&#xf…...

D2001UK,1GHz频段下2.5W高功率输出的单端式硅DMOS RF FET射频晶体管

简介今天我要向大家介绍的是 Semelab 的硅DMOS RF FET晶体管——D2001UK。这是一款专为VHF/UHF通信频段(50 MHz至1 GHz)设计的单端式射频功率场效应管,在28V工作电压、1GHz频率下可提供2.5W的输出功率。作为一款高性能射频器件,它…...

【紧急预警】ElevenLabs 2024 Q3瑞典文语音许可证变更:3类商业场景已触发合规风险,附欧盟GDPR语音数据处理自查清单

更多请点击: https://codechina.net 第一章:ElevenLabs瑞典文语音许可证变更的合规背景与影响速览 2024年第三季度,ElevenLabs正式更新其语音合成服务的区域许可政策,将瑞典语(sv-SE)语音模型纳入欧盟《人…...

印度市场语音产品上线倒计时!ElevenLabs印地文TTS合规指南(含RBI语音存储规范、UIDAI语音采集红线)

更多请点击: https://codechina.net 第一章:印度市场语音产品上线倒计时!ElevenLabs印地文TTS合规指南(含RBI语音存储规范、UIDAI语音采集红线) 面向印度市场的语音合成产品上线前,必须严格遵循印度央行&a…...

Transformers 模型推理

Transformers 系列文章目录 第一章 Transformers 简介; 第二章 Transformers 模型推理 文章目录Transformers 系列文章目录前言Transformers模型推理一、Transformers读取预训练模型1.Transformers读取预训练模型,都是已经预训练好的,拿来即…...

D1094UK,500MHz频段下20W高功率输出的单端式硅RF MOSFET射频晶体管

简介今天我要向大家介绍的是 TT Electronics / Semelab 的硅RF MOSFET晶体管——D1094UK。这是一款专为VHF/UHF通信频段设计的单端式射频功率场效应管,在28V工作电压、500MHz频率下可提供20W的输出功率。作为一款高性能射频器件,它具备极低的反向传输电容…...

用 ai 生成带货/电商短视频,有哪些工具比较好用?下面推荐几个

在 2026 年,短视频内容已成为驱动电商转化的核心引擎。然而,许多商家仍面临本土化适配难、制作周期长、精品成本高等痛点。本文将针对“怎么用 ai 生成带货视频,有哪些工具比较好用?”以及“AI 生成电商短视频的工具有哪些&#x…...

百度网盘下载加速终极指南:3步实现高速下载的完整教程

百度网盘下载加速终极指南:3步实现高速下载的完整教程 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB/s的龟速下载而烦恼吗?作为…...

如何用OpCore-Simplify在10分钟内完成黑苹果自动化配置:终极指南

如何用OpCore-Simplify在10分钟内完成黑苹果自动化配置:终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而…...

抖音下载器技术深度解析:构建高效稳定的多媒体内容采集系统

抖音下载器技术深度解析:构建高效稳定的多媒体内容采集系统 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …...

三步掌握免费文档下载神器:kill-doc浏览器脚本完全指南

三步掌握免费文档下载神器:kill-doc浏览器脚本完全指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了…...

为Claude Code配置Taotoken密钥解决频繁封号与token不足痛点

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置Taotoken密钥解决频繁封号与token不足痛点 Claude Code作为一款高效的编程助手,其核心能力依赖于底层…...

工业三防灯干货科普:核心参数、选型逻辑及应用场景全解析

在工业照明领域,三防灯是适配恶劣环境的核心照明设备,广泛应用于车间、仓库、隧道、冷链、食品加工等多场景。不同于民用照明灯具,工业级三防灯需具备防尘、防水、防腐蚀的核心能力,其性能直接决定照明稳定性、使用寿命及后期运维…...

使用Taotoken的Python SDK快速接入大模型API教程

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken的Python SDK快速接入大模型API教程 对于希望快速将大模型能力集成到Python应用中的开发者而言,直接对接多…...

将Claude Code编程助手无缝对接至Taotoken解决账号与Token限制

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 将Claude Code编程助手无缝对接至Taotoken解决账号与Token限制 对于依赖Claude Code进行编程辅助的开发者而言,遇到官方…...

观察使用 Taotoken Token Plan 套餐后的月度成本变化

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察使用 Taotoken Token Plan 套餐后的月度成本变化 对于个人开发者或小型团队而言,大模型 API 的调用成本是项目预算…...

Vue3 入门学习

Vue3 技术文章大纲Vue3 核心特性与优势Composition API 的设计理念与优势Composition API 是 Vue3 的核心特性之一,旨在解决 Options API 在复杂组件中逻辑分散的问题。通过 setup 函数,可以将相关逻辑组织在一起,提高代码的可读性和可维护性…...