首页 > 其他分享 >Nodify学习 二:添加节点

Nodify学习 二:添加节点

时间:2024-07-18 09:30:45浏览次数:17  
标签:ObservableCollection Nodify Title get 节点 添加 new public

Nodify学习 一:介绍与使用 - 可乐_加冰 - 博客园 (cnblogs.com)

Nodify学习 二:添加节点 - 可乐_加冰 - 博客园 (cnblogs.com)

添加节点(nodes)

通过上一篇我们已经创建好了编辑器实例现在我们为编辑器添加一个节点

添加model和viewmodel并将它们绑定到视图

public class NodeViewModel
{
    public string Title { get; set; }
}
public class EditorViewModel
{
    public ObservableCollection<NodeViewModel> Nodes { get; } = new ObservableCollection<NodeViewModel>();

    public EditorViewModel()
    {
        Nodes.Add(new NodeViewModel { Title = "Welcome" });
    }
}

添加视图模型

 视图模型可以是任何形状,但节点的视图由 ItemTemplate 生成。(将 DataTemplate 放在 NodifyEditor.Resources 中也能实现相同的效果)

  <window
      ....
     xmlns:vm="clr-namespace:NodifySamples2.ViewModels"
      .....
>

<nodify:NodifyEditor
           x: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}" />
                                   </DataTemplate>
     </nodify:NodifyEditor.ItemTemplate>
</nodify:NodifyEditor>

 

添加连接节点

连接节点用于管理节点之间的连接,和绘制对应的连接线

首先,我们需要一个连接器的表示以及节点上一些集合来存储我们的连接器。

--Models

public class ConnectorViewModel
{
    public string Title { get; set; }
}
NodeViewModel 添加Input和Output
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>();
}
public class EditorViewModel
{
    public ObservableCollection<NodeViewModel> Nodes { get; } = new ObservableCollection<NodeViewModel>();

    public EditorViewModel()
    {
        Nodes.Add(new NodeViewModel
        {
            Title = "Welcome",
            Input = new ObservableCollection<ConnectorViewModel>
            {
                new ConnectorViewModel
                {
                    Title = "输入"
                }
            },
            Output = new ObservableCollection<ConnectorViewModel>
            {
                new ConnectorViewModel
                {
                    Title = "输出"
                }
            }
        });
    }
}

 然后将它们绑定到视图。(我们使用了内置的 NodeInput 和 NodeOutput 作为视图,但也有其他连接器。或者根据需要创建自己的连接器。)

 <nodify:NodifyEditor
     x:Name="Editor"
     Background="{StaticResource GridDrawingBrush}"
     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:NodeOutput Header="{Binding Title}" />
                     </DataTemplate>
                 </nodify:Node.OutputConnectorTemplate>
             </nodify:Node>
         </DataTemplate>
     </nodify:NodifyEditor.ItemTemplate>
 </nodify:NodifyEditor>

效果

下载地址

Github:zt199510/NodifySamples (github.com)

 

标签:ObservableCollection,Nodify,Title,get,节点,添加,new,public
From: https://www.cnblogs.com/zt199510/p/18308687

相关文章

  • js——DOM节点
    一、DOM节点1.什么是DOM节点?  >DOM树里每一个内容都称之为节点2.节点类型  >元素节点:例如body、div等,html是根节点  >属性节点:属性,例如classhref  >文本节点:所有的文本,例如标签里的文字二、查找节点 节点关系:父节点、子节点、兄弟节点 1.父节......
  • eureka重启后py_eureka_client库心跳包往eureka slave节点复制失败问题排查
    问题描述peer1节点(python程序往这个节点注册数据)日志:12763988:07-1718:39:45.268WARN[]--[TaskBatchingWorker-target_10.29.46.118-8]c.n.e.c.ReplicationTask:35:ThereplicationoftaskLBS-PROXY/10.30.37.85:lbx-proxy:8089:[email protected]......
  • Netcode for Entities如何添加自定义序列化,让GhostField支持任意类型?以int3为例(1.2.3
    一句话省流:很麻烦也很抽象,能用内置支持的类型就尽量用。首先看文档。官方文档里一开头就列出了所有内置的支持的类型:GhostTypeTemplates其中Entity类型需要特别注意一下:在同步这个类型的时候,如果是刚刚Instantiate的Ghost(也就是GhostId尚未生效,上一篇文章里说过这个问题),那么客......
  • 关于在vue2中使用LogicFlow自定义节点
    主要参考LogicFlow官方文档在基础流程图搭建起来后,我们想要构建自己的需求风格,例如:那么该如何对节点进行自定义设定呢?文档当中有着详细的解释,本文以实际需求为例大体介绍:import{RectNode,RectNodeModel,h}from"@logicflow/core";classCustomNodeViewextendsR......
  • RabbitMQ 添加新用户
    比如:在windows系统中安装的RabbitMQ。它的默认用户名 guest密码是 guest如果要新加一个用户 ,用户名 admin密码是 admin新建用户需要授权 添加用户   或   创建成功之后,点进新创建的用户 用户授权这样就可以用新创建的用户连接了从 黄色的......
  • DevExpress WPF中文教程 - 为项目添加GridControl并将其绑定到数据
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 如何给地图瓦片底图添加滤镜,实现自己想要的主题色
    核心:使用css的filter滤镜属性,然而搭配svg实现想要的效果首先确认底图服务提供的瓦片是否为浅色主题(透明瓦片不适用)实现步骤: 截取原浅色底图图片,类似于下图,最好是带上海洋部分的截图SVGGradientMapFilter这个网站调整自己想要的底图主题效果,网址:https://yoksel.github.......
  • 向url中的添加参数,要求传递对象后解析成参数到url上
    例如:传参{name:'张三',age:18},functionurlFn(obj){ leturl='http://www.alibb.com' letkeys=Object.keys(obj) letvalues=Object.values(obj) url+='?' for(leti=0;i<keys.length;i++){ if(i==keys.length-......
  • [十万个为什么] 添加lua交互
    #include"util_lua.h"//调试//---------------------------------------------------------------------------staticinttraceback(lua_State*L){constchar*msg=lua_tostring(L,1);if(msg==NULL){if(luaL_callmeta(L,1,......
  • d3.js生成知识图谱--实现节点的颜色分类,节点点击事件处理
    首先看一下节点的数据内容:nodes:[{id:1,name:'刘备',type:'皇上'},{id:2,name:'关羽',type:'将军'},{id:3,name:'张飞',type:'将军'},{id:4,name:'诸葛亮',type:......