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

1|0前置

1|0移除连接

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

 

public class EditorViewModel { public ICommand DisconnectConnectorCommand { get; }
... </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> EditorViewModel() { DisconnectConnectorCommand </span>= <span style="color: #0000ff;">new</span> DelegateCommand&lt;ConnectorViewModel&gt;(connector =&gt;<span style="color: #000000;"> { </span><span style="color: #0000ff;">var</span> connection = Connections.First(x =&gt; x.Source == connector || x.Target ==<span style="color: #000000;"> connector); connection.Source.IsConnected </span>= <span style="color: #0000ff;">false</span>; 将连接器属性设为false connection.Target.IsConnected = <span style="color: #0000ff;">false</span><span style="color: #000000;">; Connections.Remove(connection); }); ... }

}

Xaml

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

</nodify:NodifyEditor>

 

1|0控制节点位置

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

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

public class NodeViewModel : NotifyPropertyBase { public string Title { get; set; }
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Point _location; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Point Location { </span><span style="color: #0000ff;">get</span> =&gt;<span style="color: #000000;"> _location; </span><span style="color: #0000ff;">set</span> =&gt; Set(<span style="color: #0000ff;">ref</span><span style="color: #000000;"> _location, value); } </span><span style="color: #0000ff;">public</span> ObservableCollection&lt;ConnectorViewModel&gt; Input { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; } = <span style="color: #0000ff;">new</span> ObservableCollection&lt;ConnectorViewModel&gt;<span style="color: #000000;">(); </span><span style="color: #0000ff;">public</span> ObservableCollection&lt;ConnectorViewModel&gt; Output { <span style="color: #0000ff;">get</span>; <span style="color: #0000ff;">set</span>; } = <span style="color: #0000ff;">new</span> ObservableCollection&lt;ConnectorViewModel&gt;<span style="color: #000000;">();

}

 

Xaml

<nodify:NodifyEditor ItemsSource="{Binding Nodes}" Connections="{Binding Connections}" PendingConnection="{Binding PendingConnection}">
&lt;nodify:NodifyEditor.ItemContainerStyle&gt; &lt;Style TargetType=<span style="color: #800000;">"</span><span style="color: #800000;">{x:Type nodify:ItemContainer}</span><span style="color: #800000;">"</span>&gt; &lt;Setter Property=<span style="color: #800000;">"</span><span style="color: #800000;">Location</span><span style="color: #800000;">"</span><span style="color: #000000;"> Value</span>=<span style="color: #800000;">"</span><span style="color: #800000;">{Binding Location}</span><span style="color: #800000;">"</span> /&gt; &lt;/Style&gt; &lt;/nodify:NodifyEditor.ItemContainerStyle&gt;<span style="color: #000000;"> ...

</nodify:NodifyEditor>

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

2|0源码

github:zt199510/NodifySamples (github.com)


__EOF__

本文作者可乐加冰
本文链接https://www.cnblogs.com/zt199510/p/18315740.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   可乐_加冰  阅读(317)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
点击右上角即可分享
微信分享提示