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

相关推荐
西安景驰电子9 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
WangY_ZQ10 小时前
【无标题】
windows·python
言乐611 小时前
Python游戏水平测试辅助系统2
开发语言·windows·python·游戏·django
百事牛科技12 小时前
办公文档防护:如何限制 PDF 转换成其他格式文件
windows·pdf
老王的笔记v13 小时前
38期 Windows系统性能监控工具,CPU显卡温度网络数据实时查看
windows
程序员老陆13 小时前
Qt中实现窗口真全屏(覆盖Windows任务栏)
开发语言·windows·qt
经典199215 小时前
解析pdf表格内容
windows·pdf
BIBI204917 小时前
Windows 下 Maven 安装与 VSCode 配置
java·windows·vscode·maven·环境搭建·安装教程
Chief_fly18 小时前
【Windows 下载 ARM64 deb 包 麒麟 ARM 离线安装】
arm开发·windows
阿昭L18 小时前
ZwQuerySystemInformation通过PsLoadedModuleList枚举内核模块
windows·逆向工程·windows内核