1.3: Virtualizing

New in version 1.3 is an improved sample that demonstrates virtualizing a large tree.

Creating a lot of Nodes or Links is inherently very time-consuming. However there is no simple way to virtualize a diagram application so that it only creates the parts that are visible in the diagram’s viewport. A major reason for this is that most layouts cannot occur until the layout knows exactly how big each node is. But no one can know how big a node is until the Node has been created and all of its templates have been applied and its whole visual tree expanded and all of its data-bindings have been performed.

But if one is able to make some simplifying assumptions, this is not an insurmountable problem. Basically, by putting the node location and size information into the node data, one is able to have layouts that work on the node data rather than directly on Nodes. Furthermore this then makes it possible to implement a VirtualizingPartManager and a VirtualizingDiagramPanel. The two work together to make sure that parts that are outside of the viewport are not created until needed.