This sample demonstrates a Visio-like design surface where the links may have either or both ends unconnected.

If you draw a new link from a node (at the ports, where the Cursor is a Hand) but do not connect it to another port, the new link is connected at only one end.

If you reconnect an existing link to no other node/port, the link is disconnected at that end of the link. You can disconnect both ends, if you choose.

You can then reconnect the disconnected end of a link -- either to a port on a node, or to "nothing" again, perhaps at a different location.

It is also possible to drag a single link. Doing so disconnects both ends of the link. You can then connect either end of the link. If the positions of the existing nodes/ports are suitable, it is even possible to connect up both ends of the link in the same drag-drop gesture.

This sample also demonstrates many customized Adornment templates. The node DataTemplate specifies three custom adornment templates.

The go:Part.SelectionAdornmentTemplate is a thin dashed blue rectangle around the whole node.

The go:Part.ResizeAdornmentTemplate specifies eight blue tool handles, four at the corners and four at the middles of the sides. There is now a go:Part.ResizeElementName attached property, so that the user can resize a different element from the one that gets the selection handles.

The go:Part.RotateAdornmentTemplate is a blue circle. However, when the go:Part.RotationAngle is zero, the rotation handle is positioned above the node instead of to the right of the node. This required a custom RotatingTool.