GoXam for WPF v3
DiagramLayout Class
Members 
Northwoods.GoXam.Layout Namespace : DiagramLayout Class
DiagramLayout is the base class for all of the predefined specific layout implementations.
Object Model
DiagramLayout ClassDiagram ClassGroup Class
Syntax
[DesignTimeVisible(false)]
[StyleTypedProperty(Property="FocusVisualStyle", StyleTargetType=System.Windows.Controls.Control)]
[XmlLangProperty("Language")]
[UsableDuringInitialization(true)]
[RuntimeNameProperty("Name")]
[UidProperty("Uid")]
[TypeDescriptionProvider(MS.Internal.ComponentModel.DependencyObjectProvider)]
[NameScopeProperty("NameScope", System.Windows.NameScope)]
public class DiagramLayout : System.Windows.FrameworkElement, IDiagramLayout  
Remarks

This provides a rudimentary default layout that will position all of the nodes that have no position (i.e. the Location is NaN, NaN). Nodes that already have a position are ignored. The layout behavior may be improved in the future.

The Northwoods.GoXam.LayoutManager will call CanLayoutPart to decide which Northwoods.GoXam.Nodes and Northwoods.GoXam.Links will be passed to DoLayout. CanLayoutPart looks at this layout's Id and the part's LayoutId to see if they match, among other criteria.

As changes occur to the diagram, such as the addition of a Northwoods.GoXam.Node or the removal of a Northwoods.GoXam.Link or the change in size of a Group, the Invalidate method will be called. Depending on the kind of change and on the value of Conditions, the ValidLayout property may be set to false. At a later time, such as at the end of a transaction, the Northwoods.GoXam.LayoutManager will call DoLayout to make the layout valid again.

To implement your own custom layouts, you can inherit from either this class or from one of the other predefined layout classes, overriding the DoLayout method. You can call the Move method to re-position a node, including whole groups, possibly with animation. Install the layout as the value of Northwoods.GoXam.Diagram.Layout or Layout.

Although this class inherits from FrameworkElement in order to support data binding, it is not really a FrameworkElement or UIElement! Please ignore all of the properties, methods, and events defined by FrameworkElement and UIElement.

Inheritance Hierarchy

System.Object
   System.Windows.Threading.DispatcherObject
      System.Windows.DependencyObject
         System.Windows.Media.Visual
            System.Windows.UIElement
               System.Windows.FrameworkElement
                  Northwoods.GoXam.Layout.DiagramLayout
                     Northwoods.GoXam.Layout.CircularLayout
                     Northwoods.GoXam.Layout.ForceDirectedLayout
                     Northwoods.GoXam.Layout.GridLayout
                     Northwoods.GoXam.Layout.LayeredDigraphLayout
                     Northwoods.GoXam.Layout.TreeLayout

See Also

Reference

DiagramLayout Members
Northwoods.GoXam.Layout Namespace