Thank you,
Ido.
Go ahead and define the two DataTemplateDictionarys as you have been. I assume you have been doing:
<....Resources>
<go:DataTemplateDictionary x:Key="StandardDataTemplates">
<DataTemplate x:Key="..."> ... </DataTemplate>
<DataTemplate x:Key="..."> ... </DataTemplate>
</go:DataTemplateDictionary>
<go:DataTemplateDictionary x:Key="DraggableDataTemplates">
<DataTemplate x:Key="..."> ... </DataTemplate>
<DataTemplate x:Key="..."> ... </DataTemplate>
</go:DataTemplateDictionary>
</....Resources>
Add a third one as a resource:
<go:DataTemplateDictionary x:Key="DiagramDataTemplates" />
Then your controls could be:
<go:Palette NodeTemplateDictionary="{StaticResource DraggableDataTemplates}" ... />
<go:Diagram NodeTemplateDictionary="{StaticResource DiagramDataTemplates}" ... />
And in code you do the “merge”:
var dtd = Diagram.FindResource<DataTemplateDictionary>(myDiagram, "DiagramDataTemplates");
foreach (var kvp in Diagram.FindResource<DataTemplateDictionary>(myDiagram, "DraggableDataTemplates")) {
dtd.Add(kvp.Key, kvp.Value);
}
foreach (var kvp in Diagram.FindResource<DataTemplateDictionary>(myDiagram, "StandardDataTemplates")) {
dtd.Add(kvp.Key, kvp.Value);
}