GoXam introduction

GoXam provides controls for implementing diagrams in your WPF and Silverlight applications.

The Diagram class is a Control that fully supports the standard customization features expected in WPF and Silverlight. These features include:

  • styling
  • templates
  • data binding
  • use of all WPF/Silverlight elements
  • use of WPF/Silverlight layout
  • animation
  • commands (WPF)

Diagrams consist of nodes that may be connected by links and that may be grouped together into groups. All of these parts are gathered together in layers and are arranged by layouts. Most parts are bound to data.

The Diagram control is data-bound to your application data in two manners:

  • directly, in the DataTemplates that define the appearance and behavior of the nodes and links, and
  • indirectly, via the diagram's Model property, which interprets your data to determine link relationships and group-membership relationships.

Each diagram has a PartManager that is responsible for creating a Node for each data item in the model's NodesSource data collection, and for creating or deleting Links as needed.

The nodes are arranged by the diagram's Layout and by each Group's Layout.

Tools handle mouse events. Each diagram has a number of tools that perform interactive tasks such as selecting parts or dragging them or drawing a new link between two nodes. The ToolManager determines which tool should be running, depending on the current circumstances.

Each diagram has a CommandHandler that implements the Commands that handle keyboard events.

The DiagramPanel class provides the ability to scroll the parts of the diagram or to zoom in or out. The Overview control allows the user to see the whole model and to control what part of it the diagram displays. The Palette control shows parts that the user can drag into a diagram.

You can select one or more parts in the diagram. The template implementation may change the appearance of the node or link when it is selected. The diagram may also add Adornments to indicate selection and to support tools such as resizing a node or reconnecting a link.

GoXam is the umbrella name for our XAML-based presentation diagramming products. The two products correspond to the two platforms: GoWPF for WPF and GoSilverlight for Silverlight. GoXam depends on the System.Windows.* namespaces/assemblies excluding System.Windows.Forms.

GoDiagram is the umbrella name for our GDI±rendered diagramming products. The three products correspond to the three platforms: GoWin for .NET Windows Forms, GoWeb for ASP.NET Web Forms, and GoPocket for .NET Compact Framework Windows Forms. GoDiagram depends on the System.Drawing.* namespaces/assembly plus either System.Windows.Forms or System.Web.*.

To confuse matters slightly, we sometimes use “GoDiagram” as a marketing catchall for all of our diagramming products, including JGo. But I avoid using it in that manner.