WPF 现代 UI 控件库和 MVVM 工具集,面向工业自动化 HMI/SCADA 场景。
🎨 主题
| 主题 |
风格 |
适用场景 |
| Light |
知乎深蓝 #2254F4,现代明亮 |
通用桌面应用 |
| Dark |
暗色护眼 |
编码工具,夜间使用 |
| Industrial |
工业灰蓝,钢蓝配色 |
工控上位机 HMI/SCADA |
| IndustrialDark |
深蓝黑底,钢蓝强调 |
监控大屏,暗房环境 |
ThemeService.LoadTheme("Industrial"); // 运行时一键切换
📦 安装
dotnet add package QianToolsUI.Controls
🧩 控件清单
自定义控件(25 个)
输入类
| 控件 |
说明 |
用法 |
| WatermarkTextBox |
水印文本框 |
<ctrl:WatermarkTextBox Watermark="请输入..." /> |
| NumericUpDown |
数值调节 |
<ctrl:NumericUpDown Value="25" Minimum="0" Maximum="100" /> |
| SearchBar |
搜索框 |
<ctrl:SearchBar Placeholder="搜索..." /> |
| IpTextBox |
IP 地址输入 |
<ctrl:IpTextBox IpAddress="192.168.1.1" /> |
| PinBox |
验证码/PIN 输入 |
<ctrl:PinBox Length="6" IsPrivacy="True" /> |
| TimePicker |
时间选择 |
<ctrl:TimePicker /> |
| ColorPicker |
颜色选择器 |
<ctrl:ColorPicker SelectedColor="Blue" /> |
状态指示
| 控件 |
说明 |
用法 |
| StatusIndicator |
I/O 点位指示器 |
<ctrl:StatusIndicator Shape="Circle" State="On" /> |
| Badge |
角标 |
<ctrl:Badge BadgeText="99+" BadgeType="Danger">... |
| Tag |
标签/Chip |
<ctrl:Tag Content="运行中" TagType="Success" Closable="True" /> |
| Shield |
徽章 |
<ctrl:Shield Content="故障" ShieldType="Danger" Count="3" /> |
进度与仪表
| 控件 |
说明 |
用法 |
| CircleProgressBar |
环形进度(Ring/Stripe) |
<ctrl:CircleProgressBar Value="75" StrokeThickness="10" /> |
| WaveProgressBar |
波浪液位 |
<ctrl:WaveProgressBar Value="75" /> |
| DigitalDisplay |
LED 数码管 |
<ctrl:DigitalDisplay Value="387.2" Unit="V" Label="A相电压" /> |
| StepBar |
步骤条 |
<ctrl:StepBar ActiveIndex="2"> |
容器
| 控件 |
说明 |
用法 |
| Card |
卡片容器 |
<ctrl:Card Title="标题">... |
| GroupBox |
分组面板 |
<ctrl:GroupBox Header="设备控制">... |
| Expander |
折叠面板 |
<ctrl:Expander Header="参数设置">... |
| FormItem |
表单项(Left/Top + 验证) |
<ctrl:FormItem Header="标签" LabelPosition="Top">... |
| DashboardPanel |
仪表盘面板 |
<ctrl:DashboardPanel Header="📊 监控">... |
反馈
| 控件 |
说明 |
用法 |
| Growl |
全局通知 |
Growl.Success("操作完成") |
| QianMessageBox |
模态弹窗 |
QianMessageBox.Info("提示") |
| Notification |
顶部通知条 |
Notification.Show("消息", NotificationType.Success) |
| Empty |
空状态占位 |
<ctrl:Empty Description="暂无数据" /> |
数据
| 控件 |
说明 |
用法 |
| Transfer |
穿梭框 |
<ctrl:Transfer ItemsSource="{Binding All}" SelectedItems="{Binding Sel}" /> |
| Pagination |
分页 |
<ctrl:Pagination Total="200" PageSize="20" CurrentPage="3" /> |
标准控件样式(15 类)
Button(7变体) / TextBox / PasswordBox / ComboBox / CheckBox(Switch) / RadioButton / ProgressBar / Slider / TabControl / DataGrid / ListBox / ListView / TreeView / ScrollBar / Calendar(DatePicker) / ContextMenu / ToolTip
MVVM 基础:ObservableObject / RelayCommand / AsyncRelayCommand
值转换器 / 附加行为 / 标记扩展
多语言:LocalizationService.Switch("en") / {Loc KeyName} 标记扩展
🌐 多语言
支持 中文 / English / 日本語:
LocalizationService.Switch("en"); // 切换到英文
string label = LocalizationService.Get("Common.OK"); // 获取本地化字符串
<TextBlock Text="{markup:Loc Common.Search}" />
🚀 代码示例
// 主题切换
ThemeService.LoadDark();
// 通知
Growl.Success("操作成功");
Notification.Show("连接失败", NotificationType.Error);
// 多语言
LocalizationService.Switch("en");
<ctrl:StatusIndicator Shape="Square" InteractionMode="Toggle"
Label="电机 M1" Address="Q0.0" />
<ctrl:PinBox Length="6" IsPrivacy="True" />
<ctrl:FormItem Header="设备名称" IsRequired="True"
LabelPosition="Top" Description="PLC 标识">
<ctrl:WatermarkTextBox Watermark="请输入" />
</ctrl:FormItem>
<ctrl:DashboardPanel Header="📊 电气参数">
<WrapPanel>
<ctrl:CircleProgressBar Value="72" StrokeThickness="10"
Foreground="{DynamicResource Brush.Selection}" />
<ctrl:DigitalDisplay Value="387.2" Unit="V" Label="电压" />
<ctrl:WaveProgressBar Value="65" />
</WrapPanel>
</ctrl:DashboardPanel>
<ctrl:Transfer ItemsSource="{Binding AllDevices}"
SelectedItems="{Binding SelectedDevices}"
HeaderLeft="可用设备" HeaderRight="已选设备"
DisplayMemberPath="Name" />
<ctrl:StepBar ActiveIndex="2">
<ctrl:StepBarItem Content="原料准备" />
<ctrl:StepBarItem Content="加工处理" />
<ctrl:StepBarItem Content="质量检测" />
</ctrl:StepBar>
📊 项目结构
QianToolsUI/
├── src/
│ ├── QianToolsUI/ # 核心库 (net8.0/9.0/10.0)
│ │ ├── MVVM/ # ObservableObject, RelayCommand
│ │ ├── Converters/ # 值转换器
│ │ ├── Behaviors/ # 附加行为
│ │ ├── Markup/ # LocExtension, EnumBinding
│ │ ├── Services/ # LocalizationService
│ │ └── Langs/ # 语言包 (zh-CN/en/ja)
│ ├── QianToolsUI.Controls/ # 控件库 (net8.0)
│ │ ├── Controls/ # 25 个自定义控件
│ │ ├── Themes/ # 4 套主题 + 15 类样式
│ │ ├── Converters/ # 控件专用转换器
│ │ └── Theming/ # ThemeService
│ └── QianToolsUI.Demo/ # 演示应用
│ ├── Views/ # 9 个展示页面
│ └── ViewModels/
🔧 集成
App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/QianToolsUI.Controls;component/Themes/Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
📄 许可
MIT License