MindFusion.Wpf Pack Programmer's Guide
What's New in this Release

The list below describes recent changes and additions to MindFusion Pack for WPF:

New in 2024.R2

 Diagramming for WPF

Custom anchor point / pattern classes

The control now supports serialization of custom AnchorPoint and AnchorPattern -derived objects. Call the RegisterClass method to specify XML or JSON type identifiers of the custom classes. Override SaveToXml and LoadFromXml to serialize custom properties in XML format. Override SaveToJson and LoadFromJson to serialize custom properties in JSON format. Custom classes must also implement no-argument and copy constructors.

Miscellaneous

 Spreadsheet for WPF

New in 2024.R1

.NET 8 support

The MindFusion.WPF Pack distribution now includes assemblies and sample projects for .NET 8. Locally installed assemblies do not appear automatically in Visual Studio toolbox at this time; you can either add them manually or through Nuget package manager.

 Diagramming for WPF

UI virtualization improvements

NodeListView improvements

ItemLabel improvements

Drag-and-drop improvements

Miscellaneous

New in 2023.R2

 Diagramming for WPF

Model / view separation

Diagram is now considered a model class and must be displayed inside DiagramView control. DiagramView contains a built-in ScrollViewer, so updating applications to this version should be a matter of replacing old ScrollViewer with new DiagramView, and using zoom, scroll and behavior properties of the view object instead of diagram one.

For compatibility with legacy code, Diagram still inherits from Control and can be used on its own for time being, but following new features are only available through the new DiagramView class. In addition, view-related properties of Diagram, such as ZoomFactor, Scroll position, Behavior, are now marked as obsolete and will display compile warnings when used.

UI virtualization

DiagramView and ContainerNode add UI elements to WPF visual tree only for diagram items they are currently visible in respective viewports. This should improve diagram's rendering / refresh speed.

Note that rendering speed improves only when showing a smaller part of the diagram inside DiagramView's viewport. Rendering a lot of items at small zoom levels or in overview's fit-all mode will still need a lot of processing, so you might want to apply constraints on minimal zoom level of diagram view and overview controls for large diagrams.

Spatial index

Set the EnableSpatialIndex property of Diagram to create an index of item positions for faster hit-testing and viewport clipping queries. When combined with UI virtualization, this should greatly improve user interaction and rendering speed for diagrams containing tens of thousands or more items.

C#  Copy Code

// create 20000 links + nodes in total
for (int i = 0; i < 10000; i++)
{
    var node = diagram.Factory.CreateShapeNode(x, y, size, size);
    node.Text = i.ToString();
    if (x > diagram.Bounds.Left)
    {
        diagram.Factory.CreateDiagramLink(
        diagram.Nodes[i - 1], diagram.Nodes[i]);
    }

    x += dist;
    if (x >= diagram.Bounds.Right)
    {
        x = diagram.Bounds.Left;
        y += dist;
    }
}

diagram.EnableSpatialIndex = true;

Multi-touch support

DiagramView handles WPF touch events and implements multitouch gestures that can be controlled via following properties:

Async serialization

Files can now be saved and loaded asynchronously. Async methods create a copy of the diagram to process it in a worker thread, and custom item classes must implement Clone method or copy constructor in order to serialize them as expected.

Miscellaneous

API changes

 Spreadsheet for WPF

 Virtual Keyboard for WPF

 Scheduling for WPF

New in 2023.R1

 Diagramming for WPF

DiagramLink improvements

SVG improvements

VirtualizingDiagram improvements

Miscellaneous

 Spreadsheet for WPF

Reporting for WPF

 Virtual Keyboard for WPF

 Scheduling for WPF

Localization

Localization support has been added to MindFusion.Scheduling built-in forms. All captions and control values can be customized by setting the corresponding property of the LocalizationInfo class. The localization data can also be exported to and loaded from XML. For additional information, refer to Localization.

Distribution now includes localization files for the following languages: