当前位置: 首页 > news >正文

UIDesign完整解析

UIDesign完整解析




VM.Start\UIDesign到底是干什么的?

简单一句话:它是一个内嵌在软件里的"可视化UI编辑器"——让你可以像搭积木一样,不用写代码就能拖拽控件、拼出一个机器视觉运行的界面。

你可以把它想象成软件自带的"画板工具":左侧是控件工具箱,中间是画布,右侧是属性面板。你从工具箱里拖一个"数据显示框"到画布上,然后在属性面板里配置这个框要显示哪个数据(比如"流程1.OK数量"),就完成了。


核心架构(文件都扮演什么角色)

三个主角:Document / DocumentView / UIDesignViewModel

文件角色通俗理解
Document.cs一份"设计文档"就像是PS里的一个 .psd 文件。它管着一份界面布局的 XAML 代码,以及"设计模式/代码模式"的切换
DocumentView.xaml+.cs文档的"可视外壳"左边是拖拽画布(Design模式),右边是XAML源码编辑器(Xaml模式),底部有个切换栏
UIDesignViewModel.cs设计师的"总管家"管理所有打开的文档、新建/打开/保存/预览、跳转到错误行等全局操作

工作流程大致是:UIDesignViewModel新建一个DocumentDocument内有一块DesignSurface(画布),然后DocumentView把它显示出来。用户在画布上拖拽控件时,底层自动生成对应的 XAML 代码。


四个子文件夹

Control/— 自定义控件工具箱

这是你可以在画布上拖拽使用的"积木块",每一个都是针对机器视觉场景定制的:

  • DataCount.xaml— OK/NG/良率统计面板(带清空按钮)
  • UITextBox.cs— 数据绑定文本框,自动读写变量(支持前缀/后缀/小数位数)
  • UINumericUpDown.cs— 数值调节框,绑变量
  • UICheckBox.cs— 复选框,绑布尔变量
  • UITextBlock.cs— 白色前景色的文本标签
  • ModuleSetButton.cs— "模块参数设置"按钮,点击弹出对应模块的配置窗口
  • RunOnceProjectButton.cs— "单次执行流程"按钮,点击启动指定流程

这些控件的共同特征:每个都有一个叫xx数据源的属性(比如tb数据源num数据源cb数据源),这个属性的值是一个数据路径(如流程1.模块A.OK),控件的显示内容会自动从这个路径读取/写入。


Dialog/— 弹窗选择器

当你在属性面板里配置某个控件的"数据源"时,会弹出这些窗口让你选:

  • AxisSelectView— 选轴卡+选轴(比如"运动卡0.X轴")
  • ModuleDataSelectView— 选流程+模块+变量(比如选流程1.模板匹配.OK数量

它们的 ViewModel 负责加载可选列表,用户选完后返回一个拼接好的路径字符串(如"流程1.模板匹配.OK数量")。


Editor/— 属性面板编辑器

这是属性面板里的"特殊编辑控件":

  • TextBoxTextLinkEditor.xaml— 点击...按钮弹出数据源选择框,给 UITextBox/UINumericUpDown 绑定变量
  • ModuleLinkEditor.xaml— 点击...弹出模块选择框
  • SelectAxisLinkEditor.xaml— 点击...弹出轴选择框
  • CheckboxBoolLinkEditor.xaml— 给复选框绑定布尔变量
  • RunOnceProjectLinkEditor.xaml— 给"单次执行"按钮绑定要执行的流程

这些 Editor 通过[PropertyEditor(typeof(UITextBox), "tb数据源")]特性注册,告诉 WpfDesign 框架:当选中 UITextBox 控件、编辑它的tb数据源属性时,就用这个自定义编辑器。


辅助文件

  • ExtensionMethods.cs— 一些工具扩展方法(文件拖放路径解析、字符串转流等)
  • MyTypeFinder.cs— 帮助 WpfDesign 框架找到程序集中的控件类型(目前大部分被注释掉了)
  • ComponentPropertyService.cs— 过滤属性面板里显示哪些属性,目前只让ForegroundMyStringProperty两个属性可见
  • ErrorListView.xaml— 显示 XAML 错误列表(行号+错误信息),双击跳转到错误位置

另外那个06UIDesign又是什么?

那是底层依赖库ICSharpCode.WpfDesign的源码——一个开源的 WPF 可视化设计器框架,来自 SharpDevelop 项目。它提供了画布(DesignSurface)、选中/拖拽/调整大小、属性面板(PropertyGrid)、撤销/重做等基础能力。VM.Start\UIDesign是在这个库的基础上,加了机器视觉行业专用的控件和编辑器。


一句话总结

UIDesign=给机器视觉操作员用的可视化界面编辑器。操作员不用写代码,拖几个"数据显示框"和"按钮"到画布上,绑上对应的流程变量,就做出了一个机器视觉运行界面。

http://www.jsqmd.com/news/1002859/

相关文章:

  • 作者归属技术与隐私保护:从特征分析到k-匿名实践
  • Java毕设选题推荐:基于 Java 的学生活动报名管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 进化算法讲义:遗传编程、进化编程与差分进化
  • 2026年质量好的山西断桥铝门窗/山西合金断桥铝门窗/山西极窄断桥铝门窗/山西高端断桥铝门窗源头工厂推荐 - 品牌宣传支持者
  • MMD Tools终极指南:在Blender中完美融合MMD工作流
  • 2026年推板机厂家:株洲圆棒推板机/实心料推板机/CNC多工位联动推板送料机专业品牌解析 - 品牌发掘
  • 别再乱接A和B了!手把手教你用MAX485芯片搭建一个稳定可靠的TTL转485模块(附完整电路图)
  • 2026年酒店咖啡机设备厂商深度评测:谁在定义商用场景的新标准? - 优质品牌商家
  • 基于西门子plc的高炉运矿皮带拣铁装置的控制系统设计31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_可以扫码
  • paperxie 论文格式不用死磕 Word,四千院校模板一键标准化排版
  • 2026年防爆控制柜品牌选择指南:专业能力与市场格局深度分析 - 优质品牌商家
  • 2026佛山市权威认证贵金属回收 TOP5+黄金回收白银回收铂金回收门店地址电话推荐
  • 2026年声光报警器品牌厂家哪家靠谱?深度评测行业格局与技术趋势 - 优质品牌商家
  • 微信聊天记录导出完整指南:3步备份你的珍贵数字记忆 [特殊字符]️
  • 2026年比较好的陕西节能系统门窗/系统门窗定制/封阳台系统门窗/断桥铝系统门窗实力工厂推荐 - 品牌宣传支持者
  • 机器学习在拓扑分类中的捷径学习现象解析
  • SAP COOIS/COOISPI报表选择条件自定义实战:从界面增强到取数逻辑的完整配置流程
  • 2026年知名的断桥铝门窗/山西断桥铝门窗/定制断桥铝门窗稳定供货厂家推荐 - 行业平台推荐
  • 黄金比例与神经认知系统的信息平衡机制
  • 密钥池托管技术:底层 API Key 全加密存储,业务方看不到原生密钥
  • 2026年6月当下评价高的栏杆批发厂家推荐,景区石凉亭/庭院石凉亭/荔枝面青石板/石雕牌楼/石材护栏,栏杆门店选哪家 - 品牌推荐师
  • Android进程永生终极方案:基于Linux内核的黑科技保活技术突破
  • 基于B2B平台的医疗病历交互系统 | 毕业设计完整源码
  • paperxie 告别 Word 折磨!四千校模板 AI 一键规整论文格式,定稿不再卡版式
  • 2026年闪蒸干燥机品牌选择指南:多维度分析常州天掣、瑞博环保与成都尚林 - 优质品牌商家
  • VS2010环境下用C#调用Windows系统语音引擎实现文字朗读的可运行示例
  • 2026年6月电话光端机企业推荐,具备防雷功能,保护电话光端机安全 - 品牌推荐师
  • Java毕设选题推荐:基于 Java 的校园选课评价综合管理平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026年 厦门线束十大厂商推荐:安防线束/汽车线/防水线/高温线/医疗线/户外线专业实力与品质之选 - 品牌发掘
  • 2026年塑钢缠绕管制造厂实力之选:SRWPE市政雨污分流/高环刚度抗压/大口径加厚排水管,地埋耐腐蚀/小区改造/水利输水生产商精选 - 品牌发掘