ProductsServicesDownloadsNewsCompanyContact

yFiles WPF Release Notes

Version 2.0 is the current major release of yFiles WPF.
The latest release of yFiles WPF is version 2.0.1.

Technical Requirements

  • Visual Studio 2008 for software development with yFiles WPF.
  • Microsoft .NET Framework 3.0 or 3.5 to execute yFiles WPF programs.
  • Microsoft Internet Explorer 6.0 or higher, Mozilla Firefox 2.0 or higher to browse the documentation.
  • A Microsoft Windows operating system that supports the Windows Presentation Foundation.

yFiles WPF 2.0

Major New Features

Folding support Bridges in edge paths Swimlane layout for grouped graphs Family tree layout
Folding support Bridges in
edge paths
Swimlane layout for
grouped graphs
Family tree layout
  • The yFiles Layout and Analysis algorithms present in yFilesAlgorithms.dll have been rewritten to remove the dependency on the Visual J# runtime and to conform to the .NET coding and naming conventions.
  • There is now sophisticated support for folding operations in a grouped graph. This enables the user to expand and collapse the contents of group nodes, as well as to show the contents of a specific group node only. All of this can be used to display multiple different views of the same graph structure.
  • Convenience classes have been added to easily bind your business model data source to a GraphControl. These utilities create dynamically updated graph instances that represent the structure of entities in the business model. For this the WPF data binding mechanisms are leveraged enabling the use of a great number and variety of data sources.
  • The support for GraphML for importing and exporting graphs and associated data has been rewritten and is now easier to use and customize.
  • The core visual graph API has been revised and now makes heavy use of structs to pass rectangle, size, and point coordinates between the methods, reducing the code bloat and ambigious and long argument lists. Also, the use of structs allows for cleaner code that uses operator overloading for geometric vector operations, while at the same time making it more obvious where data is passed by value instead of by reference.
  • The main interfaces that make up the graph API have been simplified. Convenience methods have been removed from the interface and moved to extension methods. This makes implementing the interface easier, results in a more predictable implementation while at the same time making the usage of the interface more convenient through more extension methods.
  • The location of ports is now determined by port location models, making it easier to customize the location and dynamic relocation of ports if nodes are being resized, etc.
  • For each of the possible visual styles there is now a simple abstract base class implementation that can be used as a basis of custom styles. These base classes remove the need to implement a lot of boilerplate code that was previously necessary for even the most simple style implementations.

Visual Enhancements

  • Class yWorks.Canvas.Model.BridgeManager provides support for so-called bridges in edge paths that resolve the visual ambiguity induced by edge crossings.

Automatic Layout

  • Layout algorithm yWorks.yFiles.Layout.Hierarchic.IncrementalHierarchicLayouter now supports swimlane layouts of hierarchically grouped graphs.
  • Layout algorithm yWorks.yFiles.Layout.Hierarchic.IncrementalHierarchicLayouter now allows to specify placement constraints for nodes that reside in the same layer. A default implementation of new interface yWorks.yFiles.Layout.Hierarchic.Incremental.ISequenceConstraintFactory enables user-defined constrained node sequencing, where nodes can be specified to be placed at the beginning or the end of their respective layer, or can be specified to be placed before/after a given reference node.
  • A new domain-specific layout algorithm, yWorks.yFiles.Layout.Genealogy.FamilyTreeLayouter, has been added that is especially suited for genealogical family trees.
  • Minimum size constraints for group nodes have been added to the major layout algorithms yWorks.yFiles.Layout.Hierarchic.HierarchicGroupLayouter, yWorks.yFiles.Layout.Organic.OrganicLayouter, yWorks.yFiles.Layout.Organic.SmartOrganicLayouter, and yWorks.yFiles.Layout.Hierarchic.IncrementalHierarchicLayouter.
    the relevant data can be bound to the graph using data provider look-up key yWorks.yFiles.Layout.Grouping.GroupingKeys.MinimumNodeSizeDpKey.
  • Significantly improved generic label placement algorithms yWorks.yFiles.Layout.Labeling.SALabeling and yWorks.yFiles.Layout.Labeling.GreedyMISLabeling. The number of overlapping labels has been drastically reduced. Furthermore, these algorithms now place labels associated with the Free label model.
  • Class yWorks.yFiles.Layout.SequentialLayouter has been added, that can be used to run several layouters sequentially one after the other.
Folding support Bridges in edge paths Swimlane layout for grouped graphs Family tree layout
Folding support Bridges in
edge paths
Swimlane layout for
grouped graphs
Family tree layout

Minor New Features

  • All items that make up the graph structure can now be easily associated with a user tag of any kind, which can be specified at creation time. This allows for easier binding to custom business data and less code bloat.
  • The mapper registry that can be used to register arbitrary maps of data for the items in the graph has become a first-class citizen of IGraph, making it more accessible. Also meta-data can now be associated with each mapper in the registry.
  • Class LayoutExecutor makes it easy to launch layout algorithms and perform animations both synchronously and assynchronously.
  • The implementations in the Algorithms and Layout library part now make use of the System.Collection interfaces and allow for using the foreach construct. Also, numeric constants have been replaced with enumerations where appropriate, and pairs of getters and setters have been replaced with properties.
  • Lots of extension methods have been added that greatly facilitate working with the lookup API, the layout API, the mapper registry, and IGraph in general.
  • The defaults for styles and models that are used by IGraph have been refactored and can now more easily and more consistently be set, modified, stored, and restored.
  • More Routed UI Commands have been added to the input mode architecture and input mode implementations, making customization and reusage of existing gesture even simpler. All commands can now be localized and default key bindings can be easily overridden.
  • Many different fine-grained events and callbacks have been added to the various input mode implementations making customization easier because subclassing is now less frequently required for customizations.
  • GraphControl now has the notion of a "current" item which can be adorned by a focus rendering and which will automatically be highlighted if the graph control has keyboard focus.
  • A default keyboard navigation feature has been implemented that allows for moving, extending, toggling, and modifying the selection, setting the current item and navigating into and out of groups in the context of a folded graph.
  • Undoable edits in the undo queue can now easily be localized.
  • Important parts of the library have been annotated with value analysis attributes that can be used to indicate possible NullReferenceExceptions and superfluous null checks.
  • Many places in the library that previously allowed null values now require non-null values. Void and Null Implementations have been provided that now take their place and making most checks for null in code obsolete.
  • The focus and selection visualization for nodes, edges, and labels can now be easily customized using component resource keys.
  • Many of the default style implementations have been enhanced in functionality and for some it was possible to further improve rendering performance.
  • Changing label and port locations is now animated smoothly. Also, the feel of the animation of the viewport has been improved.
  • Many more improvements great and small for both the Layout algorithms and the Viewer.

New Demos and Documentation

  • Added a tutorial solution consisting of a number of Visual Studio projects that show how to make use of the basic features in the library in a step-by-step manner.
  • Added documentation and demos for the new features. Among others, there are new demos that show how to use many of the new convenience extension methods, the new databinding features, the reworked GraphML engine, and the improved input modes, as well as the new abstract style classes.
  • Revisited demos to make use of the new features and paradigms.

Incompatible Changes

This major release is API incompatible with previous yFiles WPF releases. Namespace names have changed, interfaces, classes, and methods have been refactored, some have been renamed or removed. No features or functionality has been removed.

There is a migration guide available that lists the changes that need to be done for existing projects to compile with this release. Also, the distribution contains a compatibility library that can be referenced in existing projects to facilitate the migration. It consists of adapter classes and extension methods that simulate or provide the legacy API in the new release. The sources for this compatibility library are also available, making it possible to leverage the capabilities of modern IDE refactoring tools to semi-automatically migrate existing code.

The GraphML that is written by this version is slightly incompatible with previous releases. However, a compatibility library is included in the distribution that can be used to import GraphML that has been written with previous versions. Also, this library mimics the legacy API so that existing code needs only marginal adjustments to work with the newer API.