Design aligns AxiOmron.PcbCheck visuals with the reference program using HandyControl 3.5.1.
4.5 KiB
4.5 KiB
Axi Omron PCB Check - UI 美化设计文档
目标
将 AxiOmron.PcbCheck 的 WPF 界面引入 HandyControl (3.5.1) 进行美化,视觉风格与参考程序(Daimler_PCB_Check_Client)保持一致,降低后续维护成本。
当前状态
- 项目为 .NET 8 WPF 应用,当前无第三方 UI 库。
- 主要界面文件:
MainWindow.xaml:顶部标题栏 + 两个导航按钮 + Frame 容器。Views/Pages/DashboardPage.xaml:状态卡片、操作按钮、日志表格、最近处理记录。Views/Pages/SystemSettingsPage.xaml:TabControl 配置表单。
- 参考程序已使用
HandyControl3.5.1,并采用SkinDefault主题 +PrimaryBrush等内置资源。
设计细节
1. 引入 HandyControl 包
- 在
AxiOmron.PcbCheck.csproj中添加PackageReference Include="HandyControl" Version="3.5.1"。 - 在
App.xaml的Application.Resources中合并两个资源字典:pack://application:,,,/HandyControl;component/Themes/SkinDefault.xamlpack://application:,,,/HandyControl;component/Themes/Theme.xaml
- 引入 HandyControl 命名空间
xmlns:hc="https://handyorg.github.io/handycontrol"到需要使用高级控件的页面(如主窗口)。
2. MainWindow.xaml
- 标题栏:背景改用
DynamicResource {x:Static hc:ResourceToken.PrimaryBrush}(与参考程序一致)。 - 标题文字:字号 20、白色、加粗、左边距 20。
- 导航按钮:使用
Style="{StaticResource ButtonPrimary}"(参考程序样式),字号 18、加粗、适当内边距,保持“首页 / 系统设置”两个按钮。 - 窗口尺寸:保持现有 Width=1600 / Height=950 / MinWidth=1400 / MinHeight=860,居中启动。
- Frame 容器:不变,继续承载
DashboardPage与SystemSettingsPage。
3. DashboardPage.xaml
- 页面背景:移除硬编码
#0F172A,改由外层窗口/页面背景统一,或显式设为{DynamicResource {x:Static hc:ResourceToken.BackgroundBrush}}。 - 操作按钮:将现有自定义
PrimaryButtonStyle替换为 HandyControl 的ButtonPrimary,保持命令绑定不变。 - 状态卡片:
- 将现有
Border卡片样式替换为 HandyControl 的Card(hc:Card)或保留Border但统一使用主题色。 - 推荐做法:使用
hc:Card,设置BorderThickness="0",内部保持StackPanel+TextBlock结构。 - 标题字体:16-18,加粗;数值字体:14-16。
- 将现有
- 数据表格:
- 日志
DataGrid与最近处理记录DataGrid保留,但移除硬编码行背景色、前景色、边框色,使用系统默认或浅色主题下的 DataGrid 样式。 - 列宽与绑定不变。
- 日志
- 流程状态区:将“流程状态”卡片改为
hc:Card高亮展示,错误信息使用红色文字(不变)。
4. SystemSettingsPage.xaml
- TabControl:使用 HandyControl 的
TabControl样式(默认已覆盖),或显式使用hc:TabControl。 - 表单项:
- 将大量
Label + TextBox组合替换为hc:TextBoxExtend,设置hc:InfoElement.Title="标题"和hc:InfoElement.TitlePlacement="Left"。 - 这样可以去掉自定义
FieldLabelStyle和FieldTextBoxStyle,减少代码量。 - 每个 Tab 内部保持
ScrollViewer+Grid两列布局(标题列 + 输入列)。
- 将大量
- 复选框:使用
CheckBox即可,HandyControl 已提供默认样式。 - 底部操作栏:保留“重新加载 / 保存配置”两个按钮,样式改为
ButtonPrimary和ButtonDefault(或保持默认),与参考程序一致。
5. 数据绑定与代码影响
- 所有 ViewModel 命令、属性绑定保持不变。
- 不需要修改
.cs文件,除非控件类型变更导致需要调整命名引用(如Border->hc:Card不影响后台代码)。 - 自定义
BooleanToBrushConverter继续保留并在DashboardPage使用。
6. 构建与验证
- 添加包后执行
dotnet restore。 - 编译项目,确认无 XAML 资源加载异常。
- 启动应用,检查:
- 主窗口标题栏颜色与按钮样式正常。
- Dashboard 卡片、表格显示正常,无布局错位。
- SystemSettings 各 Tab 表单输入框带有 HandyControl 样式(圆角、焦点效果)。
- 各页面切换无异常。
排除项(本次不做)
- 不改写业务逻辑、ViewModel、服务层。
- 不引入 HandyControl 的高级控件(Growl、Timeline、Pagination 等),避免过度设计。
- 不替换为其他 UI 库(MahApps、MaterialDesign、WPFUI 等)。