前言

数据驱动的时代,如何将复杂的数据以直观、美观的方式呈现给用户,成为许多应用的核心需求。特别是在制造业、物流、能源等行业,实时监控与可视化分析能力直接关系到决策效率和运营水平。

本文介绍一个基于 WPF 开发的轻量级但功能完整的可视化报表项目,用于桌面端数据展示。

项目介绍

一个使用 WPF 技术开发的可视化数据看板示例。它模拟了物流云平台的主页界面,通过丰富的图表、动态数据绑定和定制化 UI 元素,展示如何在 Windows 桌面应用中实现专业级的数据可视化效果。整个项目结构清晰,采用 MVVM 架构,便于维护和扩展。

项目功能

1、支持多类型图表展示,包括左右两侧的饼图用于产能与成分占比分析,中间主区域的折线图用于时间序列趋势追踪;

2、动态数据更新机制,所有图表均通过绑定 ViewModel 中的集合属性实现自动刷新;

3、具备交互式操作,例如点击">"按钮可切换下一组数据,点击标题区域可关闭窗口;

4、集成自定义视觉元素,如背景图、装饰性边框、颜色标识等,提升整体视觉体验;

5、数据显示内容涵盖生产数量、同比增长率、产能比、报废趋势等关键业务指标,贴近实际应用场景。

项目特点

项目最突出的特点是"轻量而精致"。

虽然代码量不大,但通过巧妙利用 WPF 的资源系统、样式复用和 LiveCharts 图表库,实现了接近商业级的 UI 效果。

另外,界面完全无边框、置顶显示,并采用透明背景与图片叠加的方式营造出科技感十足的视觉风格。所有文本颜色、字号、间距等细节都通过资源字典统一管理,保证了设计的一致性与可维护性。

项目技术

  • 项目基于 .NET Framework(或 .NET Core/5+ 亦可适配),核心框架为 WPF。

  • 架构方面严格遵循 MVVM 模式,借助 Prism 库实现 ViewModel 自动绑定(通过 prism:ViewModelLocator.AutoWireViewModel="True")。

  • 图表部分采用开源库 LiveCharts.Wpf,支持丰富的图表类型和动画效果。

  • 交互逻辑则通过 Microsoft.Xaml.Behaviors(即 Interactivity 命名空间)实现命令绑定,避免在视图中编写后台代码。

  • 资源管理方面,大量使用 StaticResource 引用预定义的颜色、字号等,提升开发效率。

项目代码

动态更新一个饼图(Pie Chart)的数据,实现每隔 1 秒刷新一次图表内容的效果。

public void PiestartR()
{
    SeriesCollectionR = new SeriesCollection
    {

    new PieSeries
                    {
                        Title = "Chrome",
                        Values = new ChartValues<ObservableValue> { new ObservableValue(new Random().Next(1, 10)) },
                        DataLabels = true
                    },
    new PieSeries
                    {
                        Title = "Mozilla",
                        Values = new ChartValues<ObservableValue> { new ObservableValue(new Random().Next(1, 10)) },
                        DataLabels = true
                    },
     new PieSeries
                    {
                        Title = "Opera",
                        Values = new ChartValues<ObservableValue> { new ObservableValue(new Random().Next(1, 10)) },
                        DataLabels = true
                    },
     new PieSeries
                    {
                        Title = "Explorer",
                        Values = new ChartValues<ObservableValue> { new ObservableValue(new Random().Next(1, 10)) },
                        DataLabels = true
                    }
     };
    Task.Run(() =>
    {
        while (true)
        {
            Thread.Sleep(1000);
            //通过Dispatcher在工作线程中更新窗体的UI元素
            Application.Current.Dispatcher.Invoke(() =>
            {
                var r = new Random();
                var c = SeriesCollectionR.Count > 0 ? SeriesCollectionR[0].Values.Count : 5;

                var vals = new ChartValues<ObservableValue>();
                for (var i = 0; i < c; i++)
                {
                    vals.Add(new ObservableValue(r.Next(1, 10)));
                }
                SeriesCollectionR.Add(new PieSeries
                {
                    Title = r.ToString(),
                    Values = vals,
                    DataLabels = true
                });
                //更新横坐标
                SeriesCollectionR.RemoveAt(0);
            });
        }

    });
}

项目效果

饼图带有内环和图例,折线图平滑流畅,整体界面既专业又不失现代感,非常适合用于大屏监控或汇报演示场景。

设备实时数据

产线实时数据

人员实时信息

 

总结

WPF可视化报表虽是一个小型项目,却充分体现了 WPF 在开发高性能、高颜值桌面应用方面的强大能力。它不仅展示了如何将数据与视觉设计有机结合,也为初学者提供了 MVVM + Prism + LiveCharts 的典型实践范例。对于需要快速开发内部数据看板或演示系统的团队来说,该项目是一个具有参考价值的示例。

关键词

#WPF、#MVVM、#LiveCharts、#数据可视化、#Prism、#报表系统、#桌面应用、#XAML、#图表展示、#数据大屏、#工业可视化、#工业软件

最后

如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!

作者:小码编匠

出处:gitee.com/smallcore/DotNetCore

声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

方便大家交流、资源共享和共同成长

纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读

WPF + Modbus + LiveCharts 工业级生产监控大屏

C# 统一工业 CAN 设备通信:跨平台、多厂商、高性能的通信库

一文看懂 CAN 通信:C# 实现上位机通信方法

从零搭建视觉系统?这个 .NET 工业视觉平台值得参考

.NET 8 工业设备数据管理与监控系统:多协议采集、批处理与动态 UI 实现

WinForm + PLC + SQLite 的上位机项目,真的值得你收藏!

C# + VisionPro 实现模板匹配与颜色识别的工业视觉检测系统

.NET 8 + WPF 做工业机器人3D仿真?HelixToolkit 真香

.NET 8 打造工业级运动控制系统

C# 实现工控机硬件监控与看门狗系统,别再让工控机死机

AI 辅助开发如何重塑 .NET 9 + WPF 企业级应用架构?

C# 开发 Modbus 通信?这两大开源库你必须了解

WinForm 自适应布局神器:告别手动计算,轻松实现专业界面

用 C# + WinForms 手撸一个轻量级矢量图绘制系统

WPF + MVVM 工业生产监控平台,用户控件动态加载与流畅动画实现

开源的 WPF 工业协议调试工具,支持 Modbus、S7 和 OPC UA

VisionMaster 通讯太麻烦?.NET 8 + TCP 为工业视觉定制的轻量通信方案

WinForm 打造类 IDE 的运动控制上位机

谁说 .NET 桌面过时了?AI 协作开发 WPF + SQLite 监控工具

WPF + Modbus-RTU 轻量级工控上位机框架

基于 Avalonia  + Vosk 的跨平台工业级离线语音采集方案

WinForm 实现的工业视觉流程编排系统,告别硬编码

基于 .NET 的 YOLO 多模型推理平台开源了

C# 工业开发必备:20+ 开源组件大合集(S7 模拟/流程图引擎/YOLO 视觉)

C# + Halcon 打造 VisionPro 风格的拖拽式视觉工具

WinForms 工业 HMI 上位机框架,Modbus TCP + MQTT 都搞定了

C# 打造工业级 SCADA 系统,从零搭建智慧加压站监控平台

WPF + Modbus 打造轻量级工业数据采集与监控系统

.NET 8 + WPF 打造多协议 PLC 通讯平台,工业数据采集从未如此简单

从零实现 WinForm 运动控制上位机:点动、急停、自动运行全搞定

.NET 好用的 PLC 通信网关,支持多品牌工业设备

不用真实 PLC?这个 C# 模拟器让上位机开发随时联调 S7

.NET 8 + WPF 做工业软件?这个 MES 项目值得参考

C# 零依赖 YOLO 图像标注器 OpenCvSharp 与 GDI+ 双实现

.NET 10 车牌识别集成新思路,标准接口 + 动态库即插即用

C# 正运动控制卡:一套可落地的三轴定位引导系统

C# 轻量级工业温湿度监控系统(含数据库与源码)

C# 工业级流程图控件:轻量、高效、可交互

C# 工控精选 20+开源项目(含PLC模拟、状态机、高颜值HMI)

C# + Halcon 打造你的可视化机器视觉流程编辑器

C# 工厂自动化实战:用软PLC + HMI 一体化开发控制系统

别再说 C# 做不了工业视觉!多相机 + 插件架构 + 全流程管控全落地

C# 打造自己的 PLC 模拟器:无需硬件也能开发上位机

.NET 9 + Avalonia 实现跨平台 AI 标注工具,一键自动标注 YOLO 目标

C# 实现 Visual Studio 风格的 WinForms 可视化设计器

觉得有收获?不妨分享让更多人受益

关注「DotNet技术匠」,共同提升技术实力

收藏

点赞

分享

在看

更多推荐