第五节:Nodify 节点位置设置

引言

如果你尝试过前几节的代码,会发现节点都是出现在0,0 位置,及编辑器左上角。编辑器作为最外层的交互控件,内部封装了节点容器ItemContrainer,我们通过样式属性对Loaction做绑定。本节将介绍如何配置节点位置。

1、节点位置

需要在节点类中增加System.Windows.Point类型 位置属性

public partial class NodeViewModel : ObservableObject
{public string Title { get; set; }//节点位置[ObservableProperty]Point _location;public ObservableCollection<ConnectorViewModel> Input { get; set; } =new ObservableCollection<ConnectorViewModel>();public ObservableCollection<ConnectorViewModel> Output { get; set; } =new ObservableCollection<ConnectorViewModel>();
}

2、位置绑定

在编辑器中绑定节点位置属性

<nodify:NodifyEditor.ItemContainerStyle><Style TargetType="{x:Type nodify:ItemContainer}"><Setter Property="Location" Value="{Binding Location}" /></Style>
</nodify:NodifyEditor.ItemContainerStyle>

完整xaml代码如下

 <Grid><nodify:NodifyEditorName="Editor"Connections="{Binding Connections}"ItemsSource="{Binding Nodes}"PendingConnection="{Binding PendingConnection}"><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:NodeInputAnchor="{Binding Anchor, Mode=OneWayToSource}"Header="{Binding Title}"IsConnected="{Binding IsConnected}" /></DataTemplate></nodify:Node.InputConnectorTemplate><nodify:Node.OutputConnectorTemplate><DataTemplate DataType="{x:Type mod:ConnectorViewModel}"><nodify:NodeInputAnchor="{Binding Anchor, Mode=OneWayToSource}"Header="{Binding Title}"IsConnected="{Binding IsConnected}" /></DataTemplate></nodify:Node.OutputConnectorTemplate></nodify:Node></DataTemplate></nodify:NodifyEditor.ItemTemplate><nodify:NodifyEditor.ConnectionTemplate><DataTemplate DataType="{x:Type vm:ConnectionViewModel}"><nodify:StepConnection Source="{Binding Source.Anchor}" Target="{Binding Target.Anchor}" /></DataTemplate></nodify:NodifyEditor.ConnectionTemplate><nodify:NodifyEditor.PendingConnectionTemplate><DataTemplate DataType="{x:Type vm:PendingConnectionViewModel}"><nodify:PendingConnectionAllowOnlyConnectors="True"CompletedCommand="{Binding FinishCommand}"StartedCommand="{Binding StartCommand}" /></DataTemplate></nodify:NodifyEditor.PendingConnectionTemplate><nodify:NodifyEditor.ItemContainerStyle><Style TargetType="{x:Type nodify:ItemContainer}"><Setter Property="Location" Value="{Binding Location}" /></Style></nodify:NodifyEditor.ItemContainerStyle></nodify:NodifyEditor></Grid>

在编辑器构造中添加示例编辑器代码运行查看本节演示内容

 var welcome = new NodeViewModel(){Title = "我的第一个节点",Input = new ObservableCollection<ConnectorViewModel>{new ConnectorViewModel { Title = "输入" }},Output = new ObservableCollection<ConnectorViewModel>{new ConnectorViewModel { Title = "输出" }},Location = new Point(10, 10)};var node2 = new NodeViewModel(){Title = "我的第二个节点",Input = new ObservableCollection<ConnectorViewModel>{new ConnectorViewModel { Title = "输入" }},Output = new ObservableCollection<ConnectorViewModel>{new ConnectorViewModel { Title = "输出" }},Location = new Point(50, 100)};var nodify = new NodeViewModel{Title = "To Nodify",Input = new ObservableCollection<ConnectorViewModel>{new ConnectorViewModel { Title = "In" }},Location = new Point(200, 10)};Nodes.Add(welcome);Nodes.Add(node2);Nodes.Add(nodify);Connections.Add(new ConnectionViewModel(welcome.Output[0], nodify.Input[0]));

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DHCP DNS 欺骗武器化——实用指南

DHCP 枚举 在我们之前的文章中,我们分享了 DHCP DNS 欺骗背后的理论。实际上,需要几条信息才能有效地执行我们描述的攻击。对于攻击者来说幸运的是,发现DHCP 服务器并了解其配置的能力是 DHCP 协议的一部分,这使得侦察过程变得微不足道。 在以下章节中,我们将描述攻击者…

Git的使用教程及常用语法02

四.将文件添加到仓库 创建仓库 git init查看仓库的状态 git status 添加到暂存区 git add提交 git commitgit status 可以查看当前仓库的状态信息&#xff0c;例如包含哪些分支&#xff0c;有哪些文件以及这些文件当前处在怎样的一个状态。 由于当前没有存储任何的东西&…

基于Python的机器学习系列(7):多元逻辑回归

在本篇博文中&#xff0c;我们将探讨多元逻辑回归&#xff0c;它是一种扩展的逻辑回归方法&#xff0c;适用于分类数量超过两个的场景。与二元逻辑回归不同&#xff0c;多元逻辑回归使用Softmax函数将多个类别的概率输出映射到[0, 1]范围内&#xff0c;并确保所有类别的概率和为…

PMBOK® 第六版 控制范围

目录 读后感—PMBOK第六版 目录 结果固然重要&#xff0c;过程同样不可或缺。过程不仅是通往预期成果的途径&#xff0c;也是个人和团队能力提升与经验积累的关键阶段。过程中的每一步都是学习和成长的机会&#xff0c;每一次尝试都能激发创新&#xff0c;而公正透明的流程更增…

TCP BBR 数学模型完整版

今天顺带加入了 bbr 的所有状态和所有流程&#xff0c;获得以下的方程组&#xff1a; C Bltbw&#xff0c;R RtProp&#xff0c;T_r ProbeRTT 周期&#xff0c;g1 Startup gain&#xff0c;g2 ProbeBW gain。设 x estimated bandwidth&#xff0c;r round trip time&am…

MySQL 数据库深度解析:安装、语法与高级查询实战

一、引言 在现代软件开发和数据管理领域中&#xff0c;MySQL 数据库凭借其高效性、稳定性、开源性以及广泛的适用性&#xff0c;成为了众多开发者和企业的首选。无论是小型项目还是大型企业级应用&#xff0c;MySQL 都能提供可靠的数据存储和管理解决方案。本文将深入探讨 MyS…

系统编程-lvgl

带界面的MP3播放器 -- lvgl 目录 带界面的MP3播放器 -- lvgl 一、什么是lvgl&#xff1f; 二、简单使用lvgl 在工程中编写代码 实现带界面的mp3播放器 main.c events_init.c events_init.h 补充1&#xff1a;glob函数 补充2&#xff1a;atexit函数 一、什么是lvgl&a…

安科瑞ACREL-7000能源管控平台在综合能耗监测系统在大型园区的应用

摘要&#xff1a;大型综合园区已经成为多种能源消耗的重要区域&#xff0c;为了探索适用于大型综合园区的综合能耗监测系统&#xff0c;建立了综合能耗监测系统整体框架&#xff0c;提出了综合能耗网络、能耗关系集合、能耗均衡度等概念&#xff0c;并以某大型综合园区为例对综…

AIGC综合应用-黑神话悟空创意写真大片制作方法(实操附模型文件)

​ 怎么用AI来制作 这种黑悟空的现代时尚大片&#xff1f; 悟空不再只是传统的西游记形象&#xff0c;而是走上现代时尚的T台&#xff0c;成为时尚大片中的主角。这个创意乍一听似乎有些离奇&#xff0c;但通过AI技术的加持&#xff0c;这一切都能轻松实现。不需要昂贵的拍摄设…

自编码器(Autoencoder, AE):深入理解与应用

自编码器&#xff08;Autoencoder, AE&#xff09;&#xff1a;深入理解与应用 引言 自编码器&#xff08;Autoencoder, AE&#xff09;是一种通过无监督学习方式来学习数据有效表示的神经网络模型。其核心思想是通过编码器将输入数据压缩成低维潜在表示&#xff0c;然后通过…

dokcer 安装 redis(单机版)

准备工作 拉取redis镜像 docker pull redis 通过docker-compose 安装redis 很方便、很简单 先安装docker&#xff0c;参考我这个安装示例进行安装 https://blog.csdn.net/qq_33192671/article/details/13714973 然后安装docker-compose&#xff0c;要是拉取docker-compose无…

低代码与AI:赋能企业数字化转型

引言 随着全球经济的快速发展和科技的飞速进步&#xff0c;数字化转型已成为各个行业和企业发展的重要趋势。数字化转型的背景不仅是提升效率和竞争力的手段&#xff0c;更是适应市场变化、满足客户需求的必由之路。 在当今信息化时代&#xff0c;技术的变革推动了企业运营方式…

Java语言程序设计——篇十七(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

探索人工智能的未来:埃里克·施密特2024斯坦福大学分享六

代理与文本生成模型的未来展望 您认为明年代理或文本生成模型会出现通货膨胀点吗&#xff1f; 不&#xff0c;不会。 我听到了类似的观点&#xff0c;尤其是埃里克科维茨的看法。他有一个很好的方式来阐述这三个趋势。虽然我之前也听说过这些趋势&#xff0c;但将它们整合起…

helm安装jenkins保姆级别

一、创建nfs服务器 这一步跳过、自行百度 注意&#xff1a;要给共享目录赋予权限chmod一下&#xff0c;不然到时候容器没办法在目录里面创建文件&#xff0c;初始化时候会报错误代码2 二、添加Jenkins的Helm仓库 helm repo add jenkinsci https://charts.jenkins.io helm re…

python dash框架 油气田可视化软件设计文档

V1.1:机器学习框架(神经网络) 时间范围优化 表格布局优化 添加前端设计元素布局 V1.0&#xff1a;基础布局和对应计算函数 要求 首先第一部分是通过神经网络预测天然气流量&#xff0c;其中输入开始时间和截止时间是为了显示这一段时间内的天然气流量预测结果 第二部分&…

前端宝典十三:node网络详解Tcp/IP/Http及网络安全防御

讨论网络相关的问题前&#xff0c;我们首先看一下从浏览器输入 URL 到显示前端页面的流程&#xff0c;首先从TCP的应用层、传输层、网络层、数据链路层开始看&#xff1a; 一、应用层、传输层、网络层、数据链路层 以下是从浏览器输入 URL 到显示前端页面的流程顺序解析&…

通过IDEA创建spring boot的web项目

1.Fle->New->Project,选择Maven&#xff0c;点击Next 2.修改项目名称&#xff0c;点击Finish 3.项目创建完毕&#xff0c;等待Maven下载完成 4.修改pom.xml文件&#xff0c;改成如下内容 <?xml version"1.0" encoding"UTF-8"?> <pr…

R 语言学习教程,从入门到精通,R 绘图饼图(22)

1、R 绘图 饼图 R 语言提供来大量的库来实现绘图功能。 饼图&#xff0c;或称饼状图&#xff0c;是一个划分为几个扇形的圆形统计图表&#xff0c;用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图&#xff0c;语法格式如下&#xff1a; pie(x, la…

基于无人机边沿相关 ------- IBUS、SBUS协议和PPM信号

文章目录 一、IBUS协议二、SBUS协议三、PPM信号 一、IBUS协议 IBUS&#xff08;Intelligent Bus&#xff09;是一种用于电子设备之间通信的协议&#xff0c;采用串行通信方式&#xff0c;允许多设备通过单一数据线通信&#xff0c;较低延迟&#xff0c;支持多主机和从机结构&a…