用途
wpf-xaml-style-generator 用于为 WPF 应用程序生成 XAML 样式、控件模板和资源字典,并提供主题支持。其目标是创建一致、可维护的 UI 样式,遵循现代设计原则。
主要能力
- 生成控件样式和模板
- 创建带主题支持的资源字典
- 设置浅色/深色主题切换
- 生成画刷和颜色资源
- 创建自定义控件模板
- 设置隐式与显式样式
- 生成动画资源
- 配置 Fluent Design 集成
输入参数
输入为对象,必填字段为 projectPath(WPF 项目路径)。可选字段包括:
- designSystem:枚举值 fluent、material、custom,默认 fluent
- themes:数组,元素枚举值 light、dark、high-contrast,默认 ["light", "dark"]
- controls:数组,元素枚举值 button、textbox、combobox、listbox、datagrid、menu、all,默认 ["all"]
- accentColors:对象,包含 primary 和 secondary 字符串
- includeAnimations:布尔值,默认 true
输出
输出为对象,必填字段为 success(布尔值)。可选字段包括 files(数组,每项含 path 和 type,type 枚举值为 colors、brushes、styles、templates、themes)和 mergedDictionaries(字符串数组)。
资源字典结构
生成的资源字典按以下结构组织:
Resources/ ├── Themes/ │ ├── Colors.Light.xaml │ ├── Colors.Dark.xaml │ └── Colors.HighContrast.xaml ├── Brushes.xaml ├── Styles/ │ ├── ButtonStyles.xaml │ ├── TextBoxStyles.xaml │ ├── ComboBoxStyles.xaml │ └── DataGridStyles.xaml ├── Templates/ │ └── ControlTemplates.xaml └── Themes.xaml(合并字典)
生成的 XAML 示例
Colors.Light.xaml
包含背景色、前景色、强调色、边框色和状态色等 Color 资源,例如 BackgroundPrimary 为 #FFFFFF、AccentPrimary 为 #0078D4、SuccessColor 为 #107C10 等。
Brushes.xaml
定义响应主题变化的动态画刷,使用 DynamicResource 引用颜色资源,例如 BackgroundPrimaryBrush、ForegroundPrimaryBrush、AccentBrush、BorderBrush,以及线性渐变画刷 AccentGradientBrush。
ButtonStyles.xaml
包含基础按钮样式 BaseButtonStyle(设置背景、前景、边框、内边距、最小高度、字号、光标和控件模板,并通过触发器处理鼠标悬停、按下和禁用状态)、主要按钮样式 PrimaryButtonStyle(基于 BaseButtonStyle,使用强调色背景),以及针对所有按钮的隐式样式。
主题管理器
提供 ThemeManager 类,包含 SetTheme 方法(移除现有主题字典并插入新主题字典)、CurrentTheme 属性和 ToggleTheme 方法(在 Light 与 Dark 之间切换)。
App.xaml 集成
在 Application.Resources 中通过 MergedDictionaries 合并主题颜色、画刷和各控件样式字典,主题颜色需放在最前以便画刷引用。
最佳实践
- 对可切换主题的资源使用 DynamicResource
- 按功能组织:颜色、画刷、样式分开
- 遵循命名约定:资源键名保持一致
- 提供基础样式:便于自定义
- 测试所有主题:验证对比度和可访问性
- 记录资源:为复杂模板添加注释
相关技能与智能体
相关技能包括 wpf-mvvm-scaffold(应用架构)、wpf-high-dpi-analyzer(DPI 缩放)、desktop-ui-implementation process(UI 工作流)。相关智能体包括 wpf-dotnet-expert(WPF 专业知识)和 platform-convention-advisor(设计指南)。
限制
资料未提供该技能的收费、价格、平台支持范围、具体安装命令及实际运行效果等信息。