Nodes are the building blocks of a node editor. They are wrapped in [`ItemContainer`s](ItemContainer-Overview) and can be any custom control. (e.g. a TextBlock)
The following nodes are part of the library:
### 1. The ```Node``` control
This type of node supports both ```Input``` and ```Output``` connectors and can be moved around.
```xml
In 0
In 1
Out 0
Out 1
```
The `Header` of the node can be customized using the `HeaderTemplate`. Respectively, the `Footer` of the node can be customized using the `FooterTemplate`.
Each item in the `Input` collection can be customized using the `InputConnectorTemplate`. Respectively the `Output` can be customized using the `OutputConnectorTemplate`.

### 2. The ```GroupingNode``` control
This type of node can be resized and will move nodes that are inside it if dragged by the ```Header```.
If the ```SwitchMovementModeModifierKey``` (**Shift** key by default) is held, it will move without moving its children.
```xml
```
The `Header` of the node can be customized using the `HeaderTemplate`. Respectively the `Content` of the node can be customized using the `ContentTemplate`.
The size of the node can be set programmatically by changing the `ActualSize` dependency property value.
#### Default values
* CanResize: true
* MovementMode: Grouped
#### Commands
* ResizeCompleted
* ResizeStarted

### 3. The ```KnotNode``` control
This type of control can be used to reroute ```Connection```s as it supports only one ```Connector```.
The `Content` of the node can be customized using the `ContentTemplate`.
```xml
```

### 4. The ```StateNode``` control
This type of node is a ```Connector``` itself, meaning that it will raise ```PendingConnection``` events on interaction. Because it inherits from `Connector`, you need to bind the `Anchor` property and `IsConnected` to the corresponding state. (if IsConnected is set to false, the connections won't update)
```xml
```
The `Content` of the node can be customized using the `ContentTemplate`.
