The exception is thrown for the RotationAngle property.
The issue can be observed also in the opposite direction - the diagram is serialized on a machine with some culture (for example Portugal Porguese - pt-PT) and then restored on a machine with an English culture.
The issue reproduces only when saving and loading between cultures which numeric separators are different. For example, with Bulgarian culture, the number 4.5 is represented as 4,5 (with a comma). With English culture the number will be represented as 4.5 (with a period).
To work this around, create a custom RadDiagramShape and override its Deserialize() method. Then parse the RotationAngle manually, and set it to the RotationAngle property of the shape. After this, set the RotationAngle of the SerializationInfo to null, in order to prevent the default restoring of the property.
public
partial
class
CustomShape : RadDiagramShape, IEquatable<BaseShape>
{
public
override
void
Deserialize(SerializationInfo info)
{
if
(info[
"RotationAngle"
] !=
null
)
{
var angle = Convert.ToDouble(info[
"RotationAngle"
].ToString(), CultureInfo.InvariantCulture);
this
.RotationAngle = angle;
info[
"RotationAngle"
] =
null
;
}
base
.Deserialize(info);
}
}
Currently, the print preview control provides only options for the current printer, the page orientation and the page size . Include the following options too:
- Paper Format (Lettre, A4, etc.)
- Paper Orientation (Portrait or Landscape)
- Number of copies (1, 2, 3, ...)
- Print Color Settings (Colors or Monochrome)
- Margins
- Resolution (DPI based on the capabilities of the printer)
To reproduce this use the following code snippet:
<
telerik:RadDiagram
>
<
telerik:RadDiagramShape
Content
=
"Shape 1"
Position
=
"100, 100"
/>
<
telerik:RadDiagramShape
Content
=
"Shape 2"
UseGlidingConnector
=
"True"
Position
=
"300, 100"
/>
</
telerik:RadDiagram
>
Steps to reproduce:
1. Start a new connection from Shape 1, by dragging one of its connectors.
2. Drag the connection over Shape 2.
Expected: The connector closest to the mouse should get highlighted and when you drop the connection it should get attached to the shape.
Actual: The closest connector is not highlighted. Also, when you drop the connection over the target shape it doesn't get attached.
Be able to pre-select, printer, page size and page orientation in the RadDiagramPrintPreview. By default, RadDiagramPrintPreview set the printing orientation in landscape even if we created a diagram in portrait.
RadDiagramShape has NULL content but has DataContext and ContentTemplate. In the ContentTemplate there are UIElements defined. Their automation peers are not added in the automation tree. This can be observed in UIVerify tools.
Now when i want to move the drawing in visual range,just by zoom in and zoom out ,if using the doument area like the microsoft visio,adding the A4 size design area(or B5,A3, and so on...), we can zoom in and zoom out area by Ctrl+Mousewheel,can pan the drawing by scrollbar too.
As a workaround, the property can be set locally for the time being.
When you select the Size tab and than select another shape where the Size should not be available, its content is shown whether is enabled or not. The SettingsPane should fallback to an enabled tab when one is disabled. To work this around you can create a custom RadTabControl and implement custom fallback selection logic there. Then replace the RadTabConrol from the ControlTemplate of the SettingsPaneView with the custom tab control. Check the attached project.
RadDiagram with virtualization turned off. Randomly positioned 5000 shapes are added in Diagram. For the test, Shapes are with simplified template consisting pretty much of a single Border and nothing else. On maximized WPF window, Diagram Load for about 3-3.5 seconds. On normal WPF window, DIagram loads for about 15 seconds.
Windows DPI is 125 % (you need to sign out from win 10 then sign in again in order to apply the setting successfully). Diagram is hosted in RibbonWindow. The diagram ruler does not show the ticks and labels on the left of the zero tick (label). The Position property of Diagram could (0,0) or (500, 0), (300, 0) etc... Check the attached image for better illustration. Workaround could be replacing the RibbonWindow with MS Window.
As a workaround, you can create a custom class which derives from RadDiagramConnector and override the Serialize() method. public class CustomConnector : RadDiagramConnector { static CustomConnector() { DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomConnector), new FrameworkPropertyMetadata(typeof(CustomConnector))); } public override SerializationInfo Serialize() { var info = new Telerik.Windows.Diagrams.Core.SerializationInfo(this.GetType()); if (this.Name != null) info[Telerik.Windows.Diagrams.Core.SerializationConstants.ConnectorName] = this.Name; info[Telerik.Windows.Diagrams.Core.SerializationConstants.Offset] = this.Offset.ToInvariant(); if (Telerik.Windows.Controls.DependencyObjectExtensions.IsLocalValueSet(this, RadDiagramConnector.WidthProperty)) info[Telerik.Windows.Diagrams.Core.SerializationConstants.Width] = this.Width.ToInvariant(); if (Telerik.Windows.Controls.DependencyObjectExtensions.IsLocalValueSet(this, RadDiagramConnector.HeightProperty)) info[Telerik.Windows.Diagrams.Core.SerializationConstants.Height] = this.Height.ToInvariant(); this.SerializePrimitives(info); return info; } } }
This is reproducible only if you set the RotationOrigin property to a value different than (0.5,0.5). Also, the rotation angle is wrong only on the first call of the Rotate() method of the service. To work this around you can create a custom RotationService and override its CalculateRotationAngle() method where you can calculate custom angle. http://docs.telerik.com/devtools/wpf/controls/raddiagram/features/services https://github.com/telerik/xaml-sdk/tree/master/Diagram/CustomServices
When you switch between two different positions and zoom levels leads to a wrong visualization of the diagram items.
Loading the diagram via its Load() method adds additional "Copy of" to the GroupName property of the groups.
Use TextTool to create shape with no text but with background. Pressing enter will close the tool. But the shape remains visible, but you cannot neither select it nor delete it with mouse / keyboard. By design this shape should be removed both from the Shapes collection and from the diagram surface.
As a workaround you can try deleting this shape manually by overriding the Diagram's CommandExecuted event : private void diagram_CommandExecuted(object sender, CommandRoutedEventArgs e) { if (e.Command.Name == "Edit Item") { foreach (RadDiagramTextShape textShape in this.diagram.ChildrenOfType<RadDiagramTextShape>()) { if (!this.diagram.Shapes.Contains(textShape)) { Canvas parent = textShape.Parent as Telerik.Windows.Controls.Diagrams.DiagramSurface; if (parent != null) { parent.Children.Remove(textShape); this.diagram.ServiceLocator.GetService<Telerik.Windows.Diagrams.Core.ISelectionService<IDiagramItem>>().ClearSelection(); } } } }