This sample shows a tree structure that does not use any links.

The tree grows in alternating directions as the depth increases. TreeLayout supports such layouts when you set the TreeStyle to Alternating. You can specify separate layout properties for each tree layer by setting both TreeLayout.RootDefaults and TreeLayout.AlternateDefaults.

There's no FrameworkElement.LayoutTransform in Silverlight, so the custom layout code, PipeTreeLayout has to do it for the pipes that are in alternate layers. But the use of RenderTransform by Node.SetAngle means that each pipe angled at 90 degrees does not appear with the same width and height that it actually is measured at. Instead we use the Background shape, a Rectangle, to appear as the pipe node, by explicitly setting its Width and Height to the appropriate size. That background rectangle is also named as the Part.SelectionElementName, so that selecting the pipe will give a selection handle to the rectangle, not to the misleadingly sized node.