第八节:Nodify 编辑器属性

news2024/9/24 11:31:11

引言

经过前几章的学习,你已经对Nodify框架有了初步的编程思路。当然只局限于这些还完全不够,本章节将阐述各个结构组件的一些常用属性,以便在日后的开发过程中更得心应手。

1、编辑器

平移
简介属性默认值
平移功能 控制DisablePanningfalse
平移过程中IsPanning =>true/
平移过程中ViewportSizeViewportLocation 和 ViewportTransform自动更新/
自动平移 控制DisableAutoPanningfalse
自动平移速度AutoPanSpeed15 pixels
触发自动平移的边缘距离AutoPanEdgeDistance1 millisecond
缩放
简介属性默认值
缩放功能 控制DisableZoomingfalse
缩放过程中ViewportSizeViewportLocation 和 ViewportTransform自动更新/
当前比例ViewportZoom1
最小比例MinViewportZoom0.1
最大比例MaxViewportZoom2
选择
简介属性默认值
鼠标拖动框选IsSelecting=>truefalse
缩放过程中SelectedArea自动更新/
当前选择节点集合SelectedItems/
实时选择,框选时节点选择状态立即变化,否则松开鼠标后再变化EnableRealtimeSelectiontrue
键鼠配合
  • Replace - 无修饰键(默认行为,清除已选项目并开始新选择)
  • Append - shift键(将选择添加到当前已选项目)
  • Remove - alt键(从当前已选项目中移除选择)
  • Invert - control键(移除选定项目并添加未选中项目)
/
NodifyEditor 实例 API
  • SelectArea
  • InvertSelection
  • UnselectArea
对齐
简介属性默认值
移动选中项目时对齐到何处GridCellSize1
自动校准位置EnableSnappingCorrectiontrue

EditorCommands类中可以看到以下RoutedUICommand

命令
简介属性默认值
相对于视口中心放大ZoomIn - CTRL +/
相对于视口中心缩小ZoomOut - CTRL -/
选择所有项目SelectAll - CTRL A
将视口移动到指定位置BringIntoView0,0
对齐方法:Top、Left、Bottom、Right、Middle、CenterAlignT
缩放并移动Viewport以显示尽可能多的项目FitToScreen /

 您可以在NodifyEditor实例上以编程方式调用这些命令的相应方法

  • FitToScreen
  • BringIntoView
  • ZoomAtPosition
  • ZoomIn
  • ZoomOut

2、节点容器 ItemContainer

项目容器(ItemContainer) 是编辑器中最重要的部分。它是一个内容控件,用于包装由 编辑器(NodifyEditor) 的 ItemsSource 生成的每个控件,并在图形坐标中具有 Location属性。

选择操作:鼠标左键点击并释放

选择
简介属性默认值
是否可选IsSelectabletrue
是否选中IsSelectedfalse
API

IsSelectableInArea

方法
是否可拖动IsDraggable true
通过释放右键取消拖拽操作AllowDraggingCancellation true

事件:

拖拽 ItemContainer 会触发一系列事件,这些事件由 NodifyEditor 处理并应用于所有选定的项:

  • DragStarted - 将 IsPreviewingLocation 依赖属性设置为 true;
  • DragDelta - 在拖拽操作完成或取消之前持续触发,并将所有选定项移动;
  • DragCompleted - 完成或取消拖拽操作,并将 Location 依赖属性设置为最终位置,IsPreviewingLocation 设置为 false

3、节点

节点是节点编辑器的基本组件。它们被包装在ItemContainer中,并且可以是任何自定义控件。

3.1、Node 控件 

节点的Header可以使用HeaderTemplate进行自定义,节点的Footer可以使用FooterTemplate进行自定义;Input集合中的每个项目可以使用InputConnectorTemplate进行自定义。同样,Output可以使用OutputConnectorTemplate进行自定义。

 3.2、GroupingNode 控件

这种类型的节点可以调整大小,如果通过Header拖动,它将移动其内部的节点。

如果按住SwitchMovementModeModifierKey(默认情况下为Shift键),它将移动而不会移动其子节点。

<nodify:NodifyEditor>
    <nodify:NodifyEditor.ItemsSource>
        <CompositeCollection>
            <nodify:GroupingNode Header="Grouping node"
                            Width="300"
                            Height="250" />            
            <nodify:Node Header="My node" />
            <nodify:Node Header="My other node" />
        </CompositeCollection>
    </nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>

节点的Header可以使用HeaderTemplate进行自定义。同样,节点的Content可以使用ContentTemplate进行自定义。

节点的大小可以通过更改ActualSize依赖属性的值来编程设置。

CanResizetrue
MovementModeGrouped

ResizeCompleted

命令 Command

ResizeStarted

命令 Command

3.3、KnotNode 控件

这种类型的控件可以用于重新排布(reroute)Connection,因为它只支持一个Connector

节点的Content可以使用ContentTemplate进行自定义。

<nodify:NodifyEditor>
    <nodify:NodifyEditor.ItemsSource>
        <CompositeCollection>
            <nodify:KnotNode />
        </CompositeCollection>
    </nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>

3.4 StateNode控件

 这种类型的节点本身就是一个Connector,这意味着它将在交互时引发PendingConnection事件。由于它继承自Connector,你需要将Anchor属性和IsConnected绑定到相应的状态。(如果IsConnected设置为false,连接将不会更新)

<nodify:NodifyEditor>
    <nodify:NodifyEditor.ItemsSource>
        <CompositeCollection>
            <nodify:StateNode Content="My node" />
        </CompositeCollection>
    </nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>

节点的Content可以使用ContentTemplate进行自定义。

 4、连接

连接是由两个点之间创建的。SourceTarget依赖属性是System.Windows.Point类型,通常绑定到连接器的Anchor点。

4.1、基本连接

库中所有连接的基类是BaseConnection,它派生自Shape。在创建自定义连接时,可以不受任何限值地从BaseConnection派生。

命令Command
DisconnectCommand 及 DisconnectEvent当按住ALT点击连接时触发
SplitCommand 及 SplitEvent当双击连接时触发

连接方向Direction有两种值:

  • Forward

imageimage

  • Backward

imageimage

 SourceOffsetTargetOffsetOffsetMode一起使用,会控制与锚点的距离:

 连接还有一个Spacing属性,会使连接在一段距离后转折到沿着从SourceTarget点的方向:

  • 有间距:

image

  • 无间距:

image

ArrowSize设置为"0, 0"会移除箭头。

 4.2、线连接

一条从SourceTarget的直线。

4.3、电路连接

 有一个Angle依赖属性来控制转折的位置。角度以度为单位。

4.4、曲线连接

 SourceTarget之间的贝塞尔曲线。

 5、连接器

连接器通过引发PendingConnectionStartedEvent事件来创建预备连接。连接器具有一个必须绑定的Anchor依赖属性,以便在节点位置更改时实时更新它们之间的连接。IsConnected依赖属性必须设置为true,以接收Anchor更新。

按住ALT并点击连接器会触发DisconnectionCommand

5.1、NodeInput和NodeOutPut

NodeInputNodeOutput是带有HeaderConnector的实现,可以通过自定义HeaderTemplate来显示文本或输入框。它们还公开了一个ConnectorTemplate来自定义连接器本身。通常,它们与Node.InputConnectorTemplateNode.OutputConnectorTemplate一起使用。

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

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

相关文章

了解Swagger规范检查点

目录 检查 Api注解 第一项&#xff1a;是否包含接口的文字描述、接口的类名 检查 ApiOperation注解 第一项&#xff1a;是否包含HTTP请求方法(Get、Post等) 第二项&#xff1a;是否有对方法的简单描述 第三项&#xff1a;是否有对方法的详细描述 检查 ApiResponses注解 …

分享一个基于Python的抖音女装数据分析系统flask毕设女装数据采集系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

[数据集][目标检测]电力场景输电线均压环歪斜检测数据集VOC+YOLO格式303张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;303 标注数量(xml文件个数)&#xff1a;303 标注数量(txt文件个数)&#xff1a;303 标注类别…

Apache SeaTunnel技术架构演进及其在AI领域的应用

随着数据集成需求的增长&#xff0c;Apache SeaTunnel作为新一代的数据同步引擎&#xff0c;不仅在技术架构上不断演进&#xff0c;也在AI领域展现出其独特的应用价值。在CommunityOverCode Asia 2024大会上&#xff0c;Apache SeaTunnel PMC Chair 高俊 深入探讨SeaTunnel的技…

C++核心编程02——引用

摘录于B站黑马程序员提供的笔记。 1. 引用的基本使用 作用&#xff1a; 给变量起别名 语法&#xff1a; 数据类型 &别名 原名 实例&#xff1a; #include <iostream> using namespace std;int main() {// 引用基本语法// 数据类型 &别名 原名int a 10;in…

开放式耳机怎么戴?五大市场热卖爆款推荐!

开放式耳机的佩戴方法通常比较直观&#xff0c;但具体步骤可能因不同品牌和型号的设计而异。以下是一般的佩戴步骤&#xff1a; 1. 调整耳机&#xff1a;大多数开放式耳机都有可调节的耳挂&#xff0c;首先调整耳挂&#xff0c;确保它能够舒适地适应你的耳朵形状。 2. 定位耳…

FGF20:多些研究关注

成纤维细胞生长因子20&#xff08;FGF20&#xff09;是FGF9亚家族成员&#xff0c;作为调节中枢神经发育和功能的神经营养因子。 &#xff08;数据来源AlphaFold&#xff09; FGF20由208个氨基酸组成&#xff0c;属于分泌型胞外蛋白&#xff0c;无信号肽区段&#xff0c;功能域…

独辟蹊径:找工作时的创新思维——之找到一份工作

一、背景 在日常生活中我们会遇到一些开发者抱怨“资深开发者牢牢占据着岗位&#xff0c;让年轻开发者鲜有工作机会”。与此同时&#xff0c;也有一些开发者抱怨说&#xff1a;没有人愿意招聘上了点年纪的开发者&#xff0c;每个人都在歧视大龄开发者。还有一些人抱怨他们的技…

【网络安全】服务基础阶段——第一节:Windows系统管理基础----进制转换与IP地址

一、进制转换与IP地址 进制与计算&#xff1a; 进制转换是指将一个数字从一个数制&#xff08;基数&#xff09;转换为另一个数制的过程 二进制&#xff08;Binary&#xff09;&#xff1a;基于0和1的数制&#xff0c;例如1011&#xff08;十进制11&#xff09;。八进制&…

网站分类目录提交技巧有哪些

在提交网站到分类目录时&#xff0c;掌握一定的技巧可以显著提升通过率和效果。以下是一些关键的提交技巧&#xff1a; 选择高质量的分类目录&#xff1a; 确保选择的分类目录有足够的流量和权重&#xff0c;这样提交的内容才能得到有效的展示。 考察分类目录的正规性和可信度&…

纷享AI | AI PaaS平台,企业智能转型的加速器

随着人工智能技术的飞速发展&#xff0c;企业对于智能化转型的需求愈发迫切。那么&#xff0c;企业如何把握先机&#xff0c;在激烈的市场竞争中保持领先&#xff1f;答案可能就藏在AI PaaS平台的无限潜力中。纷享销客AI PaaS平台通过Agent Builder和Model Builder为上层的场景…

山体滑坡预警摄像机

山体滑坡是一种常见的地质灾害&#xff0c;给人们的生命和财产安全带来了巨大威胁。为了及时监测山体滑坡的情况并提前预警&#xff0c;可以使用山体滑坡预警摄像机 。山体滑坡预警摄像机是一种结合了摄像技术和智能算法的设备&#xff0c;能够实时监测山体滑坡的变化情况&…

昂科烧录器支持Melexis迈来芯的位置传感器MLX90365KDC

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中Melexis迈来芯的位置传感器MLX90365KDC已经被昂科的通用烧录平台AP8000所支持。 MLX90365KDC是第II代Triaxis位置传感器IC。 这款单片器件可凭借其表面的集磁点(IMC)&#xf…

民大校园学习资料转让网站设计与实现---附源码97053

摘要 在当今数字化时代&#xff0c;学习资料转让网站作为在线学习和教育资源的重要平台&#xff0c;发挥着越来越重要的作用。为了满足用户对学习资料的需求&#xff0c;本论文旨在构建一个可靠高效的学习资料转让网站系统。 NodeJS是一个基于JavaScript的服务器端运行环境&…

【R语言实战】——多模型预测及评价

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

langchain入门系列之六 使用langchain构建PDF解析助手

本文将介绍如何使用langchain构建一个pdf解析助手&#xff0c;在此文中你将学习到langchain如何与web应用(fastapi)相结合&#xff0c;向量持久化等知识&#xff0c;话不多说&#xff0c;现在开始。 安装环境 pip install fastapi pip install python-dotenv pip install uv…

文件和注册表关联

注册表是Windows操作系统的信息存储中心&#xff0c;存放着包括计算机硬件配置、已安装软件的设置信息、当前用户的环境设置及某些文件类型与对其进行访问和操作的应用程序之间的联系等重要信息。Windows操作系统早期版本中存放在初始化文件(.ini)中的许多信息现在都存放在注册…

【STM32单片机_(HAL库)】3-4-3【中断EXTI】【智能排队控制系统】排队系统代码框架搭建

3-4-2系统框图及硬件接线 3.软件 beep、exti、gate、LCD1602、led、tasks驱动文件添加GPIO常用函数中断配置流程main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "tasks.h" #include "gate.h"…

联华证券-股票冲高回落的意义:上方抛压恢复

“股票冲高回落”是指股票价格在一段时期内迅速上涨至较高水平后&#xff0c;随后又下跌的现象。这种情况通常表明市场对股票的短期上涨缺乏持续的支撑。以下是冲高回落的主要意义和原因&#xff1a; 1.上方抛压较重 抛压是指大量的卖出订单&#xff0c;这些订单可能在股价达到…

刘海屏的优雅回归?华为Mate 70 Pro定义新美学

在智能手机的发展历程中&#xff0c;华为Mate系列一直是高端旗舰的代表。而今&#xff0c;华为Mate 70 Pro的神秘面纱终于揭开&#xff0c;其回归的刘海屏设计和独特的寰宇舷窗设计&#xff0c;再次将华为的设计理念推向了新的高度。 刘海屏的回归&#xff1a;经典与创新的融合…