首页 > 其他分享 >Nodify学习 四:添加移除连接控制器,设置节点初始位置

Nodify学习 四:添加移除连接控制器,设置节点初始位置

时间:2024-07-24 08:56:59浏览次数:6  
标签:... 控制器 ObservableCollection Nodify get connection set 移除 public

前置

移除连接

要删除连接,只需监听来自连接器本身或编辑器的断开连接事件,并删除具有连接器作为源或目标的连接。为了简单起见,我们将为 NodifyEditor 实现 DisconnectConnectorCommand。首先让我们将其添加到 EditorViewModel

 

public class EditorViewModel
{
    public ICommand DisconnectConnectorCommand { get; }

    ...

    public EditorViewModel()
    {
        DisconnectConnectorCommand = new DelegateCommand<ConnectorViewModel>(connector =>
        {
            var connection = Connections.First(x => x.Source == connector || x.Target == connector);
            connection.Source.IsConnected = false;  将连接器属性设为false
            connection.Target.IsConnected = false;
            Connections.Remove(connection);
        });

        ...
    }
}

Xaml

<nodify:NodifyEditor ItemsSource="{Binding Nodes}"
                     Connections="{Binding Connections}"
                     PendingConnection="{Binding PendingConnection}"
                     DisconnectConnectorCommand="{Binding DisconnectConnectorCommand}">
  ...
  
</nodify:NodifyEditor>

 

控制节点位置

如你所见,节点总是在屏幕的左上角。这是因为它们在图中的位置是 (0, 0)。让我们来改变这一点!

在 中添加一个 属性,类型为 ,并触发 事件。NodeViewModelLocationSystem.Windows.PointPropertyChanged

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

     private Point _location;
     public Point Location
     {
         get => _location;
         set => Set(ref _location, value);
     }
     public ObservableCollection<ConnectorViewModel> Input { get; set; } = new ObservableCollection<ConnectorViewModel>();
     public ObservableCollection<ConnectorViewModel> Output { get; set; } = new ObservableCollection<ConnectorViewModel>();
 }

 

Xaml

<nodify:NodifyEditor ItemsSource="{Binding Nodes}"
                     Connections="{Binding Connections}"
                     PendingConnection="{Binding PendingConnection}">

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

    ...

</nodify:NodifyEditor>

现在你可以在构造节点时设置它们的位置。

源码

github:zt199510/NodifySamples (github.com)

标签:...,控制器,ObservableCollection,Nodify,get,connection,set,移除,public
From: https://www.cnblogs.com/zt199510/p/18315740

相关文章

  • 记录一下oracle 19c的集群节点移除、新增操作
    虽然掌握得不够深入,但越来越讨厌oracle数据库这个软件了,实在不愿意再孤岛这个笨重、复杂的oracle了。今天花了好几个小时操作一个实验环境的迁移、配置,记录几个步骤吧,也许后续会有用。■查看数据库配置信息[oracle@node1:0~]$srvctlconfigdatabase-dblikingdbDatabaseu......
  • 代码随想录算法训练营第三天 | Leetcode 203 移除链表元素 Leetcode 206 翻转链表
    前言今天的两道题目都不难,但细节需要注意。如移除链表元素用到的虚拟头节点,翻转链表的思路。翻转链表真是写了忘,忘了写,希望这次能记住。除此之外我决定每天的记录里面增加一个总结八股的部分,将来二刷再翻看文章的时候顺便也能复习八股知识点。Leetcode203移除链表元素题目......
  • 自定义全选框,当勾选√添加到selection中,再次勾选从selection中移除
    <el-table:data="tableData"ref="tableData"height="450px"class="customer-no-border-table":row-class-name="tableRowClassName":......
  • UNS0881a-P,V1 3BHB006338R0001 可编程控制器PLC
    产品型号:UNS0881a-P,V13BHB006338R0001产品类别:可编程控制器PLC产品成色:全新、非全新质量保障:365天原产地;美国库存;有货品牌;ABBUNS0881a-P,V13BHB006338R0001控制板是一种电子设备,主要用于控制和管理各种电气设备。它通常由主控芯片、外设接口、电源模块、存储模......
  • kubernetes核心概念 Controller控制器之StatefulSet
    Kubernetes核心概念Controller之StatefulSet控制器一、StatefulSet控制器作用StatefulSet是用来管理有状态应用的控制器。StatefulSet用来管理某Pod集合的部署和扩缩,并为这些Pod提供持久存储和持久标识符。参考:https://kubernetes.io/zh/docs/concepts/workl......
  • 云原生周刊:Kubernetes v1.31 中的移除和主要变更|2024.7.22
    开源项目ArgoRolloutsArgoRollouts是一个Kubernetes控制器和一组自定义资源定义(CRDs),提供高级部署功能,例如蓝绿部署、金丝雀部署、金丝雀分析、实验以及渐进式交付功能给Kubernetes。ArgoRollouts可选地集成了Ingress控制器和服务网格,利用它们的流量塑形能力,在更新期......
  • 代码随想录算法训练营第一天leetcode704二分查找27移除元素
    leetcode704,这是leetcode提交四次后通过的结果:classSolution{  publicintsearch(int[]nums,inttarget){    if(nums.length==1&&nums[0]==target)      return 0;    if(nums.length==2)      if(nums[0]==target)......
  • Nodify学习 四:预先连接
    前置预先连接可以从连接器创建预先连接,并可以放置在ItemContainer或Connector上(如果AllowOnlyConnectors为false)。预先连接的Content可以使用ContentTemplate进行自定义。如果EnablePreview为true,PreviewTarget将更新为鼠标光标下的连接器或项目容器,或者为null(如果没有这样的元......
  • Python 请求库无法成功完成 POST(Nanotec 电机控制器)
    我有一个运行RESTWeb服务的电机控制器,我想使用Python对其进行控制。我能够使用Python请求库成功执行GET请求。但是我无法执行POST请求。它给了我以下错误:requests.exceptions.ConnectionError:('Connectionaborted.',RemoteDisconnected('Remoteendclosed......
  • 为什么 .rumble() 没有使我的控制器按照指定的方式振动?
    如果控制器断开连接,我的Python脚本(在for循环中激活PlayStation4控制器的振动)应该终止。但是,当我将持续时间参数传递给rumble方法时,它不会按照指定的方式振动。此外,当for循环处于活动状态时,它会继续振动而不会中断。PyGame文档joystick_count=pygame.joyst......