项目背景:工控上位机开发,节约成本提供产品竞争力,节约windows授权费用,支持信创。
开发工具:Visual studio 2026
软件特色功能:支持BPMN、visio格式流程图导入、导出、打印等
软件架构功能:Dock多窗口部局、多语言支持、支持excel、pdf、媒体播放器等,集成日志功能。
直接上图

导航小窗口显示/隐藏

展开菜单

切换到英文界面


导入BPMN2.0流程图:导入BPMN官方的示例multiple_user_tasks.bpmn

打印预览

导出图片

多语言管理

打开excel

打开pdf文档

视频播放器

导航菜单风格

管理窗口

软件关闭后,最小化,防止用户误操作,如何退出,从文件菜单或从系统托盘图标里退出,如下图

托图右键退出

源码:
日志:
cs
ILogger _logger => Log.ForContext<MainViewModel>();
Log.Information($"显示到前端");
Log.Error($"显示到前端错误类型");
_logger.Information("不显示到前端");
日志窗口显示效果,_logger与Log区别是只记录到log.txt

流程图节点

多语言开发:
AXAML 使用 {L Key},后台cs代码Localizer.Localizer.Instance"Key"

后台代码示例:
cs
private static string L(string key) => OpenEAP.Localizer.Localizer.Instance[key];

多语言实现源码:Localizer
在开发界面录入的key会自写入数据库,允许用户修改,提高开发效率。
例如:在前端axaml文件里录入{L MenuFile},会MenuFile会自动插入多语言表


实现源码:

cs
public string this[string key]
{
get
{
if (m_Strings != null && m_Strings.TryGetValue(key, out string res))
{
res = res ?? key;
return res.Replace("\\n", "\n");
}
#if DEBUG
var checkedKey = DbHelp.fsql.Select<ResourcesEntity>().Any(t => t.Key == key);
if (!checkedKey)
{
var lans = DbHelp.fsql.Select<LocalizationEntity>().WhereDynamic(GlobalHelper.WhereEnable).ToList();
foreach (var item in lans)
{
ResourcesEntity resourcesEntity = new ResourcesEntity
{
Culture = item.Culture,
Key = key,
Value = key
};
DbHelp.fsql.Insert(resourcesEntity).ExecuteAffrows();
}
}
#endif
return key;
}
}
白色主题

低代码界面设计器、设备数据采集、数字孪生功能等更多功能开发中,加上图联系方式获取更多开发资源