GroupTemplate when the group is a LinkLabel

In my other post, I was wondering how to connect a link to an other link. Actually, what I really need to do is to connect a multiple links on one link. So I thought of 2 solutions:

  • Add group instead of a simple node to the LinkLabel of my link
  • Add ports on my LinkLabel node
I chose the first option. Then I created a GroupTemplate to modify the look of my groups, but for some reason, the template does not apply to my group because this group is a LinkLabel.

Do I miss something?

One label node for a link can handle many link connections, just as any regular node can have multiple links connected to it.

You do need multiple label nodes inside a label group if you want them to have separate positioning for each label node along the route.

So I think you made the right choice.

Did you explicitly set the Category for the group node data? The default is “LinkLabel”, so if you didn’t specify a Category, you need to set the Diagram.GroupTemplateDictionary.LinkLabel property.

Did you make sure that each of the label group’s member nodes also has “IsLinkLabel” true?

Cool it’s working! I only had to put my DataTemplate into a GroupTemplateDictionnary and it’s working. Thank again walter!!

Last little question. Why the GridLayout does not apply to my group. Here is my code:

    <go:DataTemplateDictionary x:Key="GroupTemplateDictionnary">
        
        <!--LinkLabel Template-->
        <DataTemplate x:Key="LinkLabel">
            <Border CornerRadius="5" BorderThickness="2" Background="Pink" BorderBrush="LightGray"
                go:Node.LocationElementName="myGroupPanel"
                go:Group.IsSubGraphExpanded="True">

                <go:GroupPanel x:Name="myGroupPanel" Padding="25" />

                <go:Group.Layout >
                    <go:GridLayout />
                </go:Group.Layout>

            </Border>
        </DataTemplate>
        
    </go:DataTemplateDictionary>

Link label nodes are not laid out by the LayoutManager. Such nodes are assumed to be laid out along the Link.Route.