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 @   可乐_加冰  阅读(330)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示