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

相关推荐
Superstarimage1 小时前
使用conda创建python虚拟环境,并自定义路径
windows·python·conda
Evaporator Core7 小时前
深入探索:Core Web Vitals 进阶优化与新兴指标
前端·windows
Mcworld8578 小时前
java集合
java·开发语言·windows
hnlucky8 小时前
windows编写和调试代码工具——IDE安装
ide·windows
大强同学9 小时前
Adobe DC 2025安装教程
windows·adobe·pdf
python15610 小时前
使用Langfuse和RAGAS,搭建高可靠RAG应用
人工智能·windows·python
QQ_43766431411 小时前
单向循环链表C语言实现实现(全)
数据结构·windows·链表
CodeBlossom11 小时前
java加强 -stream流
java·windows·python
humors22113 小时前
Windows运维工具批处理版
运维·windows·计算机·电脑·笔记本·维护·台式机
hnlucky13 小时前
Windows 上安装下载并配置 Apache Maven
java·hadoop·windows·学习·maven·apache