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

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

引言

上节说到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:NodifyEditorName="Editor"ItemsSource="{Binding Nodes}"><nodify:NodifyEditor.DataContext><vm:EditorViewModel /></nodify:NodifyEditor.DataContext><nodify:NodifyEditor.ItemTemplate><DataTemplate DataType="{x:Type mod:NodeViewModel}"><nodify:NodeHeader="{Binding Title}"Input="{Binding Input}"Output="{Binding Output}"><nodify:Node.InputConnectorTemplate><DataTemplate DataType="{x:Type mod:ConnectorViewModel}"><nodify:NodeInputHeader="{Binding Title}"/></DataTemplate></nodify:Node.InputConnectorTemplate><nodify:Node.OutputConnectorTemplate><DataTemplate DataType="{x:Type mod:ConnectorViewModel}"><nodify:NodeInputHeader="{Binding Title}"/></DataTemplate></nodify:Node.OutputConnectorTemplate></nodify:Node></DataTemplate></nodify:NodifyEditor.ItemTemplate></nodify:NodifyEditor>
</Grid>​


http://www.mrgr.cn/news/7297.html

相关文章:

  • erlang学习:gen_server书上案例22.6练习题4
  • 小琳AI课堂:RAG检索增强生成
  • 巴伦射频变器(Balun RF Transformer)的常规产品通常包括以下几种类型
  • Transformer总结(三):组件介绍(位置编码,多头注意,残差连接,层归一化,基于位置的前馈网络)
  • 封装websocket
  • 嵌入式开发实训室解决方案
  • el-form中使用v-model和prop实现动态校验
  • Java重修笔记 第四十天 List集合、ArrayList集合
  • C# 使用ObjectPool对象池提高StringBuilder 的性能
  • 揭露 Sapiens:未来以人为中心的视觉任务
  • 金融基础知识-基金管理公司投资限制+保险公司投资限制
  • 卷积神经网络初认知
  • HackThe Box--Cap
  • Type-C无线麦克风方案
  • 递归神经网络 (RNN) 简介
  • 在SpringBoot项目中如何集成eureka
  • 代码随想录第六天
  • 四、Centos7-安装Gitlab
  • 饿了么后端登录模块
  • 基于cubemx的STM32的freertos的串口通信