TreeLayout and Route.Curviness

First: are you sure you want to have a TextBox as a label on each link? An input control like that is more expensive to construct and looks a little odd. Instead you might want to use a TextBlock and set go:Part.TextEditable=“True” on it.

Second: the LinkPanel’s bounds has to include everything that’s inside the panel. But I don’t see why that matters to you or your users as long as the Panel.Background is null. (I assume the green and orange rectangles that you have drawn in the screenshot are just for illustration purposes and are not part of the intended design! Hmmm, but then the green rectangle ought to be covering the upper TextBox, so something’s wrong.)

Thanks for the TextBlock tip.

And yes, I drew these rectangle manually with Paint just for illustration purposes. So yes the green rectangle covers the upper TextBox, my mistake.

Is there any way to bring the orange rectangle in front of the green rectangle?

You could change the Layer that a particular Link is in. But the general answer is: no.

But I ask again: why does it matter? The user should be able to click on anything that is visible, as long as there is no object with a transparent brush in front of it.

My mistake again. I set the Background to Transparent :P

Ok, I have another problem. I want to be able to add more than one link on a same branch (as shown in the picture below). I looked at the Fishbone example, and to tell you the truth, I’m a little bit confused with the DoLayout, MakeNetwork, AssignTreeVertexValues and Route.ComputePoints methods.

Can you just explain me the difference between these methods and give me any tips on how can I do what I wish to accomplish please.

I only suggested the Fishbone sample because of its example of overriding Route.ComputePoints. Then I remembered the other forum topic which did something more similar to what I thought you wanted.

But clearly you want something more general than just customizing the routing of links. It looks like you want to use LayeredDigraphLayout. Or perhaps something more specialized?

Well, the picture below represent every cases that I should be able to do. In my terminology, there is a split, split in a split, and split without merging. So you think the LayeredDigraphLayout might be a better choice?

If those blue-filled circles are nodes, and if there’s a transparent node at the end of the apparently unconnected link, yes.

If you want the unconnected link to be truly partly connected (i.e. Link.ToNode is null), that’s OK too, but LayeredDigraphLayout will ignore that link, so you’ll need to route it yourself.