Nodify学习 一:介绍与使用 – 可乐_加冰 – 博客园 (cnblogs.com)
Nodify学习 二:添加节点 – 可乐_加冰 – 博客园 (cnblogs.com)
添加节点(nodes)
通过上一篇我们已经创建好了编辑器实例现在我们为编辑器添加一个节点
添加model和viewmodel并将它们绑定到视图
public class NodeViewModel { public string Title { get; set; } }
public class EditorViewModel { public ObservableCollection<NodeViewModel> Nodes { get; } = new ObservableCollection<NodeViewModel>(); public EditorViewModel() { Nodes.Add(new NodeViewModel { Title = "Welcome" }); } }
添加视图模型
视图模型可以是任何形状,但节点的视图由 ItemTemplate
生成。(将 DataTemplate 放在 NodifyEditor.Resources 中也能实现相同的效果)
<window .... xmlns:vm="clr-namespace:NodifySamples2.ViewModels" ..... >
<nodify:NodifyEditor
x:Name="Editor"
ItemsSource="{Binding Nodes}">
<nodify:NodifyEditor.DataContext>
<vm:EditorViewModel />
</nodify:NodifyEditor.DataContext>
<nodify:NodifyEditor.ItemTemplate>
<DataTemplate DataType="{x:Type mod:NodeViewModel}">
<nodify:Node Header="{Binding Title}" />
</DataTemplate>
</nodify:NodifyEditor.ItemTemplate>
</nodify:NodifyEditor>
效果图
添加连接节点
连接节点用于管理节点之间的连接,和绘制对应的连接线
首先,我们需要一个连接器的表示以及节点上一些集合来存储我们的连接器。
public class ConnectorViewModel { public string Title { get; set; } }
public class NodeViewModel { public string Title { get; set; } public ObservableCollection<ConnectorViewModel> Input { get; set; } = new ObservableCollection<ConnectorViewModel>(); public ObservableCollection<ConnectorViewModel> Output { get; set; } = new ObservableCollection<ConnectorViewModel>(); }
public class EditorViewModel { public ObservableCollection<NodeViewModel> Nodes { get; } = new ObservableCollection<NodeViewModel>(); public EditorViewModel() { Nodes.Add(new NodeViewModel { Title = "Welcome", Input = new ObservableCollection<ConnectorViewModel> { new ConnectorViewModel { Title = "输入" } }, Output = new ObservableCollection<ConnectorViewModel> { new ConnectorViewModel { Title = "输出" } } }); } }
然后将它们绑定到视图。(我们使用了内置的 NodeInput
和 NodeOutput
作为视图,但也有其他连接器。或者根据需要创建自己的连接器。)
<nodify:NodifyEditor x:Name="Editor" Background="{StaticResource GridDrawingBrush}" ItemsSource="{Binding Nodes}"> <nodify:NodifyEditor.DataContext> <vm:EditorViewModel /> </nodify:NodifyEditor.DataContext> <nodify:NodifyEditor.ItemTemplate> <DataTemplate DataType="{x:Type mod:NodeViewModel}"> <nodify:Node Header="{Binding Title}" Input="{Binding Input}" Output="{Binding Output}"> <nodify:Node.InputConnectorTemplate> <DataTemplate DataType="{x:Type mod:ConnectorViewModel}"> <nodify:NodeInput Header="{Binding Title}" /> </DataTemplate> </nodify:Node.InputConnectorTemplate> <nodify:Node.OutputConnectorTemplate> <DataTemplate DataType="{x:Type mod:ConnectorViewModel}"> <nodify:NodeOutput Header="{Binding Title}" /> </DataTemplate> </nodify:Node.OutputConnectorTemplate> </nodify:Node> </DataTemplate> </nodify:NodifyEditor.ItemTemplate> </nodify:NodifyEditor>
效果
下载地址
Github:zt199510/NodifySamples (github.com)
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容