第二节:Nodify 添加节点到编辑器中

news2024/11/13 9:35:07

引言

上节说到Nodify有三层结构,编辑器Editor,节点Node和连接组件Connection,下面就让我们来进行第一步尝试,在编辑器中添加一个节点。

在窗口中添加nodify命名空间,并添加控件。

xmlns:nodify="https://miroiu.github.io/nodify"

1、设计节点Node

一个节点工具主要包含节点的名称、功能、输出输出口等,输出输出口称连接端子(Connector)

1.1、基本单元:连接端子Connector

  public class ConnectorViewModel
  {
      public string Title { get; set; }
     
  }

1.2、节点Node

创建一个节点,有一个输入端子排、一个输出端子排

public class NodeViewModel
{
    public string Title { get; set; }

    public ObservableCollection<ConnectorViewModel> Input { get; set; } = new ObservableCollection<ConnectorViewModel>();
    public ObservableCollection<ConnectorViewModel> Output { get; set; } = new ObservableCollection<ConnectorViewModel>();
}

2、编辑器Editor

编辑器:作为最外层的主要交互对象,保存所有节点

public class EditorViewModel
{
    //节点集合
    public ObservableCollection<NodeViewModel> Nodes { get; } = new ObservableCollection<NodeViewModel>();

    public EditorViewModel()
    {
        //自定义节点
        var welcome = new NodeViewModel
        {
            Title = "Welcome",
            Input = new ObservableCollection<ConnectorViewModel>
            {
                new ConnectorViewModel
                {
                    Title = "In"
                }
            },
            Output = new ObservableCollection<ConnectorViewModel>
            {
                new ConnectorViewModel
                {
                    Title = "Out"
                }
            }
        };
       
        //添加自定义节点到节点集合
        Nodes.Add(welcome);

    }
}

3、绑定属性

​
<Grid>
    <nodify:NodifyEditor
        Name="Editor"
        ItemsSource="{Binding Nodes}">
        <nodify:NodifyEditor.DataContext>
            <vm:EditorViewModel />
        </nodify:NodifyEditor.DataContext>
        <nodify:NodifyEditor.ItemTemplate>
            <DataTemplate DataType="{x:Type mod:NodeViewModel}">
                <nodify:Node
                    Header="{Binding Title}"
                    Input="{Binding Input}"
                    Output="{Binding Output}">
                    <nodify:Node.InputConnectorTemplate>
                        <DataTemplate DataType="{x:Type mod:ConnectorViewModel}">
                            <nodify:NodeInput
                                Header="{Binding Title}"
                                />
                        </DataTemplate>
                    </nodify:Node.InputConnectorTemplate>
                    <nodify:Node.OutputConnectorTemplate>
                        <DataTemplate DataType="{x:Type mod:ConnectorViewModel}">
                            <nodify:NodeInput
                                Header="{Binding Title}"
                               />
                        </DataTemplate>
                    </nodify:Node.OutputConnectorTemplate>
                </nodify:Node>
            </DataTemplate>
        </nodify:NodifyEditor.ItemTemplate>
    </nodify:NodifyEditor>
</Grid>

​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2069526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker 多线成服务,比如gunicorn服务启动报错解决办法

docker执行的时候报错&#xff0c;排查是线程创建权限不足导致的&#xff0c;报错如下。 解决办法 docker run -e OPENBLAS_NUM_THREADS1 your_image

淘宝商品评论API:评价内容中的关键词搜索与筛选

淘宝商品评论API为开发者提供了强大的工具&#xff0c;用于获取淘宝商品的评论信息&#xff0c;包括评价内容、评论评分、评论时间等。在评价内容中进行关键词搜索与筛选&#xff0c;是电商数据分析、用户行为研究以及商品质量监控等场景下的重要需求。以下是对这一过程的详细解…

EasyCVR视频汇聚平台革新播放体验:WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新&#xff0c;视频监控已经广泛应用于社会各个领域&#xff0c;成为现代安全管理的重要组成部分。在视频监控领域&#xff0c;视频编码技术的选择尤为重要&#xff0c;它不仅关系到视频的质量&#xff0c;还直接影响到视频的传输效率和兼…

智领云开源KDP:深度剖析其与主流数据平台的性能与特性对比

本文由智领云 LeetTools 工具自动生成 申请试用&#xff1a; https://www.leettools.com/feedback/ 在当今快速发展的技术环境中&#xff0c;数据平台的选择对企业的数字化转型和业务发展至关重要。本文将重点分析智领云开源KDP与其他数据平台的比较&#xff0c;探讨其在大数据…

[000-01-022].第03节:RabbitMQ环境搭建

我的后端学习大纲 RabbitMQ学习大纲 1.rpm包方式搭建&#xff1a; 1.1.搭建RabbitMQ单体架构&#xff1a; 1.MQ下载地址2.这里是提前下载好后上传安装包到服务器得opt目录下&#xff1a; 3.安装MQ需要先有Erlang语言环境&#xff0c;安装文件的Linux命令(分别按照以下顺序安装…

【多线程基础】Java线程的六种状态

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Java多线程 &#x1f4da;本系列文章为个人…

重生奇迹MU 冲锋在前近战职业

刀光剑影&#xff0c;近战搏杀的乐趣是热爱近战职业的玩家享受最强体验。重生奇迹MU中有很多近战职业&#xff0c;每个职业都拥有独特的技能和玩法&#xff0c;在战斗中表现也各不相同。选择近战职业的玩家都是英勇者&#xff0c;敢于冲锋陷阵&#xff0c;迎击敌人&#xff0c;…

【CSP:202303-2】垦田计划(Java)

题目链接 202303-2 垦田计划 题目描述 求解思路 直接模拟&#xff1a;创建一个数组arr[]&#xff0c;a[i]用来记录将第i天缩短所需要的资源数。在读取数据的时候直接对数组进行初始化。maxTime表示资源优化之前需要花费的最大天数。需要注意&#xff1a;在进行优化遍历时&am…

秋招力扣Hot100刷题总结——滑动窗口

1. 无重复字符的最长子串&#xff08;手撕频率非常高&#xff09; 题目要求&#xff1a;给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长子串的长度。 代码及思路 使用一个hashmap维护已经出现过的字符遍历字符串&#xff0c;当字符已经存在时&#xff0c;根…

微服务实战系列之玩转Docker(十二)

前言 山一程&#xff0c;水一程&#xff0c;身向榆关那畔行&#xff0c;夜深千帐灯。——清纳兰性德 最近偶读纳兰的《长相思》经典之作&#xff0c;被这个“行军”场面震撼了。长长的队伍&#xff0c;跋山涉水&#xff0c;野宿一处。夜深人静的时候&#xff0c;突然激发了纳兰…

CSS3页面布局-三栏-固定宽度布局

布局的基本概念 多栏布局三种基本实现方案&#xff1a;固定宽度&#xff0c;流动&#xff0c;弹性。 固定宽度布局&#xff1a;大小不会随用户调整浏览器窗口大小。 一版960-1100,960常见&#xff0c;可以被3,4,5,6,8,10,12,16整除。 流动布局&#xff1a;大小会随用户调整…

芯片要火不要“热”!仿真技术助力芯片热设计

芯片散热仿真好比一场微观世界里的“清凉大作战”&#xff01; 想象一下&#xff0c;小小的芯片就像迷你城市&#xff0c;无数的电子如同居民在其中穿梭。当芯片高速运转&#xff0c;就像城市进入了狂欢&#xff0c;热闹非凡但也会产生大量的热量。 而芯片散热仿真用数字和算法…

OpenStack前置配置与安装

环境&#xff1a;CentOS8最小化安装 九大组件&#xff1a; Nova:提供计算资源&#xff0c;cpu、内存等 Glance:提供镜像&#xff08;查找&#xff09;能力&#xff0c;真正存放镜像的是后端Swift。 Swift:对象存储&#xff0c;可以用来存放镜像。还可以用来存储备份。 Cin…

java生成黄红封面

import java.awt.*; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO;public class CoverGenerator {public static void generateCover(String name, String outputPath) {// A4纸的分辨率 (300 …

POJO、PO、DTO、VO、BO到底是什么?都如何使用?(基础概念+传输示意图+示例代码)带你一次玩转层出不穷的Object

文章目录 前言一、解释关系二、POJO、PO、DTO、VO、DAO、BO1.什么是POJO&#xff08;Plain Old Java Object&#xff09;2.什么是PO&#xff08;Persistent Object&#xff09;3.什么是DTO&#xff08;Data Transfer Object&#xff09;4.什么是VO&#xff08;View Object&…

缓冲区

原理 #include <stdio.h> #include <string.h> int main() { const char *msg0"hello printf\n"; const char *msg1"hello fwrite\n"; const char *msg2"hello write\n"; printf("%s", msg0); fwrite(msg1, strlen(msg0)…

MySQL 数据页详解

数据页是MySQL 中定义的的一个存储结构 数据页是保存数据行的容器 页的16KB的大小是MySQL的⼀个默认设置&#xff0c;可以适用于⼤多数场景&#xff0c;当然也可以根据自己的实际业务场景进行修改页的大小&#xff0c;通过系统变量 innodb_page_size 进行调整与查看&#xff…

可计量Agilent N5181A详情资料keysight N5182A模拟信号发生器

Keysight N5181A&#xff08;Agilent&#xff09;MXG RF 模拟信号发生器的功能和规格包括&#xff1a;信号特性&#xff1a; 100 kHz 至 1、3 或 6 GHz 1 GHz 时输出功率为 23 dBm -121 dBc/Hz&#xff08;典型值&#xff09;相位噪声&#xff08;1 GHz 和 20 kHz 偏移&…

程序员常用的十个PyCharm插件,学会工作都不用加班了!

安装方法 先来说说插件的安装方法&#xff0c;一点都不难。 选择顶部菜单栏的 PyCharm 选项&#xff0c;打开 Preferences &#xff0c;点击 plugins &#xff0c;在右侧的文本框中输入想要查看的插件名称&#xff0c;在下方就会罗列出已经安装的相关的插件。 找到我们所需要的…

虹猫ai推文软件官方

虹猫AI推文软件是一款由虹猫小队开发的人工智能推文工具。该软件通过训练深度学习模型&#xff0c;能够自动生成优质的推文内容&#xff0c;帮助用户快速撰写出吸引人的推文。 虹猫ai推文软件官方https://iimenvrieak.feishu.cn/docx/O0UedptjbonN4UxyEy7cPlZknYc 虹猫AI推文软…