
做上位机开发的时候,最麻烦的就是从零搭建UI壳。
每次接项目都要重新设计颜色体系、控件样式、页面布局。
WinForms 默认控件丑,WPF 又要写一堆 Style。
如果有一套现成的工业UI模板可以直接复制使用,就可以节省掉大部分的时间。
最近在 GitHub 上刷到了一个用 C# 编写的上位机 UI 模板,正好在做这件事。
WPF_SCADA_SimpleUITemplate 是一个 WPF 框架的上位机 UI 模板。
它把登录窗口、主框架、七种页面布局、十套样式字典都做完整了。
颜色体系以 Tailwind 蓝色为主色,控件为紧凑工业风。
在C#上位机项目中,复制Themes和Controls文件夹就可以运行了。

UI壳虽然不是业务的核心,但是每次都要重新搭建,很费时间。
该模板已经把颜色、间距、圆角、字号等都配好了,符合工业设计的审美标准。
下面我们看看它有哪些独特功能。
完整的UI主题系统,10个样式字典一起管理。
颜色、按钮、卡片、表格、下拉框、日期、列表、滚动条、图标等都分文件来管理。
主色为Tailwind蓝色系(#2563EB),成功绿、警告橙、危险红也都配好了。
在项目中,只需要把这 10 个 ResourceDictionary 合并到 App.xaml 中。以后要换颜色的话,只需要修改 Colors.xaml 这一个文件就可以了。

以前做上位机的时候,颜色都是硬编码的,改一个颜色要搜索整个项目。
现在所有的颜色都集中到了Colors.xaml里,改一处就全局生效,维护起来也舒服多了。

七种页面布局模式,包括常见的上位机应用场合。
首页总览(左边的状态灯、右边的日志),列表查询(主从表),可编辑表格(配方参数)。
参数配置(左右分区)、编辑弹窗、通讯诊断、登录窗口,每种布局都有完整的示例。
按照着抄就可以用了,不需要每一行都重新调整布局。查询区的标准结构是左边放查询条件,右边放按钮组。

以前做上位机项目的时候,只搭建一个UI壳子就需要一个星期。现在使用这个模板,复制布局修改内容,两天就可以做出界面。

工业风控件库,简洁、圆角、蓝色边框。
DataGrid 行高为 30px,表头为 32px,有隔行背景,网格线全部打开。
ComboBox、DatePicker 高度为 32-38,圆角为 6,悬停时边框会变成蓝色。
TextBox、PasswordBox 也有一样的样式,输入框的高度是 38,有焦点的时候是蓝色的边框。
在表单中使用,一行代码就可以引用,不需要在每一页上都写 Style。

以前要写几十行Style才能达到这样的效果,现在用一个资源Key就可以。
ListBox 也有自己的样式,白底圆角边框,日志面板用的是四级胶囊样式。

MVVM 架构支持,CommunityToolkit.Mvvm 自动产生属性和命令。
所有的 ViewModel 都要继承自 ObservableObject,并且字段上加上 [ObservableProperty] 来自动生成属性。
方法加[RelayCommand] 自动生成命令,并且直接绑定到按钮上。
不需要用手写INotifyPropertyChanged,也不需要写DelegateCommand,代码量减少了一半。

以前写ViewModel的时候,属性和命令都要写很多样板代码。
现在使用Source Generator自动生成,只写字段和方法,代码量减少了一半。
登录窗口也做好了,LoginWindow 用的是标准系统的标题栏,MainWindow 仍然没有边框的工业壳。

自定义控件,TopBar、SideMenu、IconButton 都已经做好了。
TopBar 完成了无边框窗口的顶部栏,左边放 Logo,右边放窗体按钮,支持拖拽和双击最大化。
SideMenu 为左侧导航,菜单项带有图标和角标,底部有 PLC 连接状态块。
IconButton 使图标和文字自动对齐,不需要再手动调整 Margin。
控件都是紧凑工业风格,和主题配色一致,复制粘贴就可以跑。图标资源也已经准备好了,13 个 Geometry 图标直接使用。
看到这你想装上试试?
可以从 GitHub 上下载到代码。
git clone https://github.com/Oncecjx/WPF_SCADA_SimpleUITemplate.git复制完目录之后,在App.xaml中合并ResourceDictionary,修改一下Logo和业务逻辑就可以跑了。
有兴趣的朋友可以抓紧时间试一试。
开源地址:https://github.com/Oncecjx/WPF_SCADA_SimpleUITemplate
夜雨聆风