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

文章目录

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

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

美化前

美化后

1. 创建kanzi窗口插件

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

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

2. 业务逻辑

插件窗口通过studio获取当前节点的绑定信息,

通过解析函数,解析成变量,函数,路径,运算符等

动态创建富文本控件,显示每一行代码

3. 关键代码

3.1 获取绑定信息

c 复制代码
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 解析绑定

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

c 复制代码
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实现不同的颜色显示

c 复制代码
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,在菜单栏点击插件,打开插件窗口

相关推荐
wkj0011 小时前
conda创建在指定目录创建项目
linux·windows·conda
想学全栈的菜鸟阿董10 小时前
CrewAI 核心概念 团队(Crews)篇
windows
梦昼初DawnDream10 小时前
防火墙规则设置
linux·服务器·windows
汤愈韬12 小时前
IIS服务器
windows·网络安全
欢乐的小猪12 小时前
win10桌面windows bing图标如何删除
windows·bing搜索
love530love15 小时前
【笔记】解决 ComfyUI 安装节点 ComfyUI-Addoor (葵花宝典)后启动报错:No module named ‘ComfyUI-Addoor’
linux·运维·前端·人工智能·windows·笔记·python
love530love15 小时前
【笔记】ComfyUI KeyError: ‘tensorrt‘ 错误的完整解决方案
windows·笔记·python·pycharm
ZJU_统一阿萨姆15 小时前
Windows系统VSCode配置Rust开发环境(超详细保姆级教程)
windows·vscode·rust
叱咤少帅(少帅)16 小时前
windows10 C 盘瘦身路径
windows·1024程序员节
开发者驿站19 小时前
2025年保姆级C++环境配置教程(Windows/macOS双平台)
c++·windows·macos