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

kanzi3.6.10 窗口插件-美化绑定内容

文章目录

  • 1. 创建kanzi窗口插件
  • 2. 业务逻辑
  • 3. 关键代码
    • 3.1 获取绑定信息
    • 3.2 解析绑定
    • 3.3 动态生成富文本控件
  • 4. 安装

背景:kanzi的节点绑定信息是黑色的,看起来非常费劲,如果能代码高亮显示,对开发会很有帮助。

美化前
在这里插入图片描述
美化后
在这里插入图片描述

1. 创建kanzi窗口插件

在这里插入图片描述
按照帮助文档,一步步建立窗口插件工程。这里不一一赘述。
在这里插入图片描述

  • Class1.cs里包含kanzi窗口插件
  • UserControl1.xaml.cs 是wpf窗口
public partial class UserControl1 : UserControl, PluginWindow
  • ClassHelper.cs 包含辅助函数,帮助解析绑定代码

2. 业务逻辑

插件窗口通过studio获取当前节点的绑定信息,
通过解析函数,解析成变量,函数,路径,运算符等
动态创建富文本控件,显示每一行代码

3. 关键代码

3.1 获取绑定信息

studio.SelectionChanged += Studio_SelectionChanged; 
private void Studio_SelectionChanged(object sender, EventArgs e)
{
Populate();
}public void Populate()
{
var currentSelection = studio.SelectedItems.FirstOrDefault();
var bindingHost = currentSelection as BindingHost;
for (int i = 0; i < lastBindsCount; i++){var currentBind = bindingHost.Bindings.ToList()[i];currentBind.Property.Name; //绑定属性currentBind.Code; // 绑定代码
}}

3.2 解析绑定

每个节点有多条绑定,每个绑定有多行代码,每行代码语句里有各种符号,需要逐字符解析。

public class ParsedExpressionResult {public string Text { get; set; }public string Type { get; set; }// 构造函数初始化列表public ParsedExpressionResult() {Text = "";Type = "";}}public class ParsedExpressionResults {public List<ParsedExpressionResult> Results { get; set; }// 构造函数初始化列表public ParsedExpressionResults() {Results = new List<ParsedExpressionResult>();}}

3.3 动态生成富文本控件

界面用ScrollViewer实现滚动条,用StackPanel实现控件排列,一个段落是一行,每个元素用run表示,Foreground实现不同的颜色显示

FlowDocument doc = richTextBoxes[index].Document;
// 创建一个新的段落
Paragraph para = new Paragraph();List<Run> runs = new List<Run>();
for(){Run run = new Run(r.Text);run.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#569CD6"));runs.Add(run);}para.Inlines.AddRange(runs);// 将段落添加到文档中
doc.Blocks.Add(para);

4. 安装

编译后的dll文件需要拷贝到kanzi安装目录下的plugins文件夹下,重启kanzi,在菜单栏点击插件,打开插件窗口

在这里插入图片描述

http://www.lryc.cn/news/498274.html

相关文章:

  • 利用tablesaw库简化表格数据分析
  • 记录一下,解决js内存溢出npm ERR! code ELIFECYCLEnpm ERR! errno 134 以及 errno 9009
  • 【JavaWeb后端学习笔记】MySQL的数据查询语言(Data Query Language,DQL)
  • 360 最新Android面试题及参考答案
  • 《操作系统 - 清华大学》6 -3:局部页面置换算法:最近最久未使用算法 (LRU, Least Recently Used)
  • ES6新增了哪些特性(待更新)
  • 剖析一下自己的简历第二条
  • 威联通-001 手机相册备份
  • 性能测试基础知识jmeter使用
  • Ceph文件存储
  • Hive分区表新增字段并指定位置
  • 关系型数据库(RDBMS)与非关系型数据库(NoSQL)应用场景
  • 浅谈CI持续集成
  • 华为新手机和支付宝碰一下 带来更便捷支付体验
  • shell编程基础笔记
  • VS Code配置Lua调试环境
  • FPGA(一)Quartus II 13.1及modelsim与modelsim-altera安装教程及可能遇到的相关问题
  • 【单片机】ESP32-S3+多TMC2209控制步进电机系列1 UART通信及无传感回零 硬件部分
  • Django之ORM
  • html css 图片背景透明
  • 使用ALB实现gRPC协议的负载均衡
  • 解决IDEA的easycode插件生成的mapper.xml文件字段之间逗号丢失
  • 【Linux测试题】
  • python使用openpyxl处理excel
  • 【JavaWeb后端学习笔记】Mybatis基础操作以及动态SQL(增、删、改、查)
  • 基于MATLAB野外观测站生态气象数据处理分析实践应用
  • IP 地理位置定位技术原理概述
  • C语言(分支结构)
  • 批量将不同的工作簿合并到同一个Excel文件
  • 详解AI网关助力配电房实现智能化管控应用