-
-
Notifications
You must be signed in to change notification settings - Fork 230
节点概述
miroiu edited this page Jun 22, 2024
·
1 revision
节点是节点编辑器的基本组件。它们被包装在ItemContainer
中,并且可以是任何自定义控件。(例如,TextBlock)
以下是库中包含的节点:
这种类型的节点支持Input
和Output
连接器,可以随意移动。
<nodify:NodifyEditor xmlns:sys="clr-namespace:System;assembly=mscorlib">
<nodify:NodifyEditor.ItemsSource>
<CompositeCollection>
<nodify:Node Header="My Node">
<nodify:Node.Input>
<CompositeCollection>
<sys:String>In 0</sys:String>
<sys:String>In 1</sys:String>
</CompositeCollection>
</nodify:Node.Input>
<nodify:Node.Output>
<CompositeCollection>
<sys:String>Out 0</sys:String>
<sys:String>Out 1</sys:String>
</CompositeCollection>
</nodify:Node.Output>
<nodify:Node.InputConnectorTemplate>
<DataTemplate>
<nodify:NodeInput Header="{Binding}" />
</DataTemplate>
</nodify:Node.InputConnectorTemplate>
<nodify:Node.OutputConnectorTemplate>
<DataTemplate>
<nodify:NodeOutput Header="{Binding}" />
</DataTemplate>
</nodify:Node.OutputConnectorTemplate>
</nodify:Node>
</CompositeCollection>
</nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>
节点的Header
可以使用HeaderTemplate
进行自定义。同样,节点的Footer
可以使用FooterTemplate
进行自定义。
Input
集合中的每个项目可以使用InputConnectorTemplate
进行自定义。同样,Output
可以使用OutputConnectorTemplate
进行自定义。
这种类型的节点可以调整大小,如果通过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
依赖属性的值来编程设置。
- CanResize: true
- MovementMode: Grouped
- ResizeCompleted
- ResizeStarted
这种类型的控件可以用于重新排布(reroute)Connection
,因为它只支持一个Connector
。
节点的Content
可以使用ContentTemplate
进行自定义。
<nodify:NodifyEditor>
<nodify:NodifyEditor.ItemsSource>
<CompositeCollection>
<nodify:KnotNode />
</CompositeCollection>
</nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>
这种类型的节点本身就是一个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
进行自定义。