当前位置: 首页 > 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.rkmt.cn/news/1514634.html

相关文章:

  • 机器学习在拓扑分类中的捷径学习现象解析
  • 基于西门子plc的高炉运矿皮带拣铁装置的控制系统设计31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_可以扫码
  • 2026年声光报警器品牌厂家哪家靠谱?深度评测行业格局与技术趋势 - 优质品牌商家
  • 微信聊天记录导出完整指南:3步备份你的珍贵数字记忆 [特殊字符]️
  • 2026年知名的断桥铝门窗/山西断桥铝门窗/定制断桥铝门窗稳定供货厂家推荐 - 行业平台推荐
  • Android进程永生终极方案:基于Linux内核的黑科技保活技术突破
  • 2026年闪蒸干燥机品牌选择指南:多维度分析常州天掣、瑞博环保与成都尚林 - 优质品牌商家
  • paperxie 告别 Word 折磨!四千校模板 AI 一键规整论文格式,定稿不再卡版式
  • Java毕设选题推荐:基于 Java 的校园选课评价综合管理平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Arduino传感器信号不稳?可能是缺了这个RC滤波电路!从原理到代码的避坑指南
  • 2026年塑钢缠绕管制造厂实力之选:SRWPE市政雨污分流/高环刚度抗压/大口径加厚排水管,地埋耐腐蚀/小区改造/水利输水生产商精选 - 品牌发掘
  • 用assign搞定组合逻辑:从门电路到Verilog代码的保姆级映射教程
  • ABB 直流调速器 DCS800-S01-0405-05
  • 2026年优质篮球馆木地板行业观察:七家实力供应商多维度解析与案例参考 - 优质品牌商家
  • 【CSDN】----再踩坑!CSDN 专栏数量受限?等级积分提升攻略来了
  • allegro(cadence)PCB设计DRC分析
  • 华大HC32F460JETA点灯踩坑记:为什么我的LED不受控制?附官方库延时函数详解
  • 2026年广州温度传感器热电偶与测温方案甄选:K型、J型、PT100铂电阻及非标定制评估 - 品牌发掘
  • FigmaCN浏览器扩展深度解析:基于DOM实时监测的中文界面本地化方案
  • 2026年电线电缆回收行业观察:哪家更靠谱?真实企业实力与案例深度解析 - 优质品牌商家
  • SOON模型:深度学习在S2S天气预报中的物理约束与优化
  • Android原生个人信息页组件:矢量图标动态着色+点击按压反馈
  • 深入探讨C++中的指针与偏移量
  • 计算机视觉:视觉 Transformer 的注意力机制与工程优化,ViT 架构的深度解析
  • Android App接入腾讯地图SDK实现高精度定位与地图渲染
  • Tauri+Rust实战:“与编译器搏斗”的四周,我们踩了五个大坑
  • 2026年 塑料检查井厂家推荐:市政排水与高环刚度井筒管品牌深度解析 - 品牌发掘
  • 改扩建项目如何处理老旧图纸?从扫描件到可设计CAD的AI流程
  • 你以为抓到了 Alpha,其实抓到的是 Beta——板块归因模块完整解剖
  • 从“能用”到“稳定”:FPGA+ADS1256高精度数据采集系统的电源、时钟与PCB布局实战经验谈