Using TreeLayout may lead to a memory leak because the TreeLayoutProcessor keeps a reference to the layout Root. Available in LIB version: 2014.3.1402
Implement "Item to Item Snapping" during item resize operation. DECLINED: Duplicate with https://feedback.telerik.com/Project/143/Feedback/Details/101276-diagram-implement-item-to-item-snapping-during-resize
Add an option to customize the available colors in the SettingsPane control:
Add an option to modify the StartPoint and EndPoint properties of RadDiagramConnection instances via the SettingsPane.
This functionality can be achieved by modifying the default ControlTemplate of the SettingsPaneView element to include an additional RadTabItem instance in the RadTabControl element. In the additional RadTabItem, input controls can be used, such as the RadNumericUpDown element. These elements should modify properties that will be present in a custom LinkViewModelBase<NodeViewModelBase>> class. More specifically, the X and Y properties of the StartPoint and EndPoint properties of the RadDiagramConnection element.
The attached sample project shows the implementation of the above approach for achieving this requirement.
Most problematic issue when container can contains a container inside of it.
In mvvm demo project i modified load/save button to Clear diagram and display different content.
It works but after few click there is a recurrence call to update Z indices.
The reason to create such combination is to have hierarchy in diagram to display diagram from general view to detailed view.
A stackOverflow exception is thrown when the diagram is layouted with AStarRouter, Sugiyama and connection bridges. Available in LIB version: 2015.3.1026
The RadDiagramContainerShape class is quite limited as a container because it has a header, resizes to fit the content and has fixed padding around the borders for the children. A simple base RadDiagramContainerShape that doesn't have a default style and doesn't impose any layout constraints on the children will be very useful to create custom containers to build nested shapes for UI design tools. Thanks Reason for Closing: Changing the class the RadDiagramContainerShape inherits from will be a breaking change we cannot afford. The mentioned customizations are possible via inheritance and custom styles.
Currently, the content of RadDiagramShape element alignment can be changed via its HorizontalContentAlignment and VerticalContentAlignment. However, in RadDiagramTextShape, those properties don't take effect. Instead the text content is always centered.
At this point, you can achieve this requirement, by extracting the ControlTemplate of RadDiagramTextShape and bind the corresponding properties of the ContentPresenter to the parent shape. For example:
<ContentPresenter x:Name="NormalContent"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
Available in R3 2016 Release
Use Bezier Connection. Change Start / End Handles with Mouse or with SetBezierHandles method in code. Rotate/ Drag the connection and notice it is being shifted / its geometry changes unexpectedly. Possible workaround override the RadDiagramConnection like so: public class CustomConnection : RadDiagramConnection { protected override void OnStartPointChanged(System.Windows.Point newValue, System.Windows.Point oldValue) { this.ConnectionPoints[0] = new Point( this.ConnectionPoints[0].X - newValue.X + oldValue.X, this.ConnectionPoints[0].Y - newValue.Y + oldValue.Y); base.OnStartPointChanged(newValue, oldValue); } protected override void OnEndPointChanged(Point newValue, Point oldValue) { this.ConnectionPoints[1] = new Point( this.ConnectionPoints[1].X - newValue.X + oldValue.X, this.ConnectionPoints[1].Y - newValue.Y + oldValue.Y); base.OnEndPointChanged(newValue, oldValue); } } Available in R3 2016 SP
StackOverflowException is thrown when the Layout() method of RadDiagram is called and the diagram's router is OrgTreeRouter. To reproduce this use TreeLayoutSettings.
To work this around, add bigger HorizontalSeparation and VerticalSeparation for the TreeLayoutSettings. Or disable the connections routing using the RouteConnections property of RadDiagram.
I looked at the RadDiagram options, but it doesn't have anything that compares to a circular relationship chart. Here's an example:
https://www.codeproject.com/KB/silverlight/342715/screenshot2.png
Part of this article:
https://www.codeproject.com/Articles/342715/Plotting-Circular-Relationship-Graphs-with-Silverl
I gave some thought at trying to rewrite the code into WPF, but I've got too many other irons in the fire. Figured I'd ask as this sort of visualization control doesn't appear in your current collection. I have a project that could benefit from displaying weighted relationships in such a manner, but my choices are either do something sub-par with the RadDiagram option, write one myself, find another controls collection and port everything, or leave the feature out for now. I'm going for the leave it out option for the moment, and see if your UI wizards can come up with something...
Just as a use case, one of the reasons for wanting this is to diagram conversations between individuals in email messages. Being able to show who's talking to whom and how frequently using one of these charts for visualization allows you to quickly find patterns...
Shape is dropped onto ContainerShape and the container is auto-resized. When you press Ctrl + Z, the shape is removed, but the old size of the Container is not reverted. Expected : the container should return to its old size. When there is a nesting of containers and you drop a shape into in innermost container, Ctrl + Z will return the previos size of the container. Available in R3 2016 Official Release.
If you pan the Diagram on touch device the Pan event is not fired. Available in R3 2016 Release
Using a custom router and gliding connectors may lead to a StackOverflow Exception. The exception is due to an endless update of the connection Start/End points and the ConnectionPoints. Resolution: The fix will be included in R2 2017 SP in June 2017. Generally, avoid using GlidingConnectors and custom Router which calculates intermediate points based on connections' StartPoint/EndPoint. This is а prerequisite of circular dependency between Start/EndPoint and ConnectionPoints. Gliding Connectors essence is to set StartEndPoints and sometimes they are based on the connection points' first and last point. On the other hand, custom router based on Start/EndPoint makes the opposite- connection points depend on start/end. Instead, the client can use the connection.Source.Bounds.Center (Top, Bottom, Left, Right etc) and connection.Target.Bounds.Center(Top, Bottom, Left, Right etc) in a custom router. Available in LIB version: 2017.2.515