GoXam 提供用于在 WPF 和 Silverlight 應用程序中進行繪圖的控件。GoXam 的設計和推廣以完全利用 Microsoft WPF 和 Silverlight 的所有功能為基礎,旨在滿足用戶的所有繪圖需求。GoWPF 是指 GoXam for WPF 3.5 或更高版本;GoSiverlight 是指 GoXam for Siverlight 4 或更高版本。
GoXam provides controls for implementing diagrams in your WPF and Silverlight applications. GoXam has been designed and implemented from the ground up to take full advantage of all of the features of Microsoft WPF and Silverlight for all of your graph-based diagram needs.GoWPF is the implementation of GoXam for WPF 3.5 or later; GoSilverlight is the implementation of GoXam for Silverlight 4 or later.
功能
折疊和展開樹形圖
作為應用于大型圖形的一項通用技術,此功能允許用戶控制樹形圖的顯示部分。GoXam 中內置了展開和折疊子樹功能,如以下示例所示,其中與 IsExpandedTree 屬性綁定了一個按扭。

子圖/組
許多圖形類型,例如工作流程圖或業務流程建模符號(BPMN),使用分組技術來組織圖形。GoXam 中支持分組功能,包括支持與層級結構的定義相關的數據綁定以及在 DataTemplate 中定義組的外觀的數據綁定。
 |  |
缺省組 DataTemplate | DataTemplate XAML 所定義的組 |
子組也可展開/折疊,如下圖所示:

子圖外部的鏈接可連接至子圖內部的節點、子圖的邊緣,或者子圖邊界的邊緣的特定端口:

帶有輸入和輸出端口的子圖
層
可將圖形對象置于不同層中以定義其 Z-order 。缺省情況下,DiagramPanel 具有 9 層,其中包括背景層、缺省和前景節點鏈接層以及輸入工具和裝飾(例如選擇手柄)層。
面板控件
許多圖形應用程序使用面板來支持向視圖中拖放新元素。GoXam 也提供了一種類型特別的面板圖形。其中以矩形網格形式顯示一系列節點。在此面板中,您可以使用與常規圖形不同的多種 DataTemplate,以針對每項提供更小更簡潔的外觀。

Logic Circuit 中的面板控件
預覽控件
此控件顯示另一圖形的整個模型的一個縮略圖以及該圖形的視圖。用戶可單擊預覽控件或拖入該控件以查看其他圖形的視圖。

剪切/復制/粘貼
缺省情況下,標準剪貼板功能處于啟用狀態,但是當應用程序不需要該功能時,將禁用標準剪貼板功能。
無限制 Undo / Redo 操作
為了支持無限制并且自定義的 undo 和 redo 操作,UndoManager 跟蹤對圖形模型所作的更改。更改按事務進行邏輯分組。
縮放/滾動/鏡頭移動
GoXam 支持滾動圖形和縮放圖形功能。您可通過設置 DiagramPanel 屬性來按程式執行滾動、放大或縮小操作。用戶可使用滾動條或平移工具滾動圖形,可使用 Control-Mouse-Wheel 來放大或縮小圖形。
內置文本編輯
支持圖形中任何文本的內置文本編輯。僅需單擊啟用文本編輯的任何文本即可對該文本進行編輯。
單選/多選/自定義裝飾
GoXam 控件支持選擇功能,此控件簡化訪問與當前所選節點綁定的數據的過程。您可通過提供定制數據模板來自定義選擇句柄和工具手柄(例如,用于調整大小)。
預定義圖形形狀以及箭頭
GoXam 中預定義了超個 195 種的常用圖形形狀以用于常規節點定義中。 樣本顯示了所有這些圖形形狀。
XML 保存/恢復
GoXam 不需要任何格式或媒介即可存儲圖形。但是,如果您不介意使用 XML 作為文檔格式,而且您沒有任何必需遵循的特定 XML 模式 ,并且你使用我們預定義的模型數據類,此控件確實能簡化以 XML 格式保存和裝入數據的過程。(Org Chart Editor、State Chart、Logic Circuit 和 Flow Chart 樣本都展示了 XML 存儲/恢復)
Features
Collapsing and Expanding Trees
A common technique for large graphs is to allow the user to control the visibility of parts of that tree. Expanding and collapsing subtrees is built into GoXam, as shown in this example where a button is bound to the IsExpandedTree property:

Subgraphs / Groups
Many graph types, such as workflow or Business Process Modeling Notation (BPMN), use grouping techniques to organize diagrams. Groups are supported within GoXam, including support for data binding for the definition of the hierarchy and in DataTemplates that define the group's appearance.
 |
 |
Default Group DataTemplate
|
Group defined by DataTemplate XAML
|
and subgraphs can expand / collapse too:

Links from outside the subgraph can connect to a node within the subgraph, to the edge of the subgraph, or to specific ports on the edge of the subgraph border:

Subgraph with input and output ports
Layers
Graphical objects can be placed within layers to define their Z-order. A DiagramPanel has 9 layers by default, including layers for background, default and foreground nodes and links, as well as layers for input tools and adornments such as selection handles.
Palette Control
Many diagram applications use a palette to support drag and drop of new elements to the view. GoXam also provides a specialized kind of diagram called the Palette. It displays a number of nodes in a rectangular grid-like arrangement. You can use different DataTemplates than in your regular Diagram, in order to provide a smaller or simpler appearance for each item.

Pallette control in Logic Circuit samples
Overview Control
It displays a thumbnail of the whole model shown by another Diagram and shows that diagram’s viewport. The user can click or drag in the Overview to scroll the other diagram’s viewport.

Cut / Copy / Paste
Standard clipboard actions are enabled by default, but may be disabled for applications where it isn't desired.
Unlimited Undo / Redo
To support unlimited and customizable undo and redo, the UndoManager tracks changes to the diagram’s model. Changes are logically grouped together by transactions.
Zooming / Scrolling / Panning
GoXam supports scrolling around and zooming into the diagram. You can scroll and zoom in or out programmatically by setting DiagramPanel properties. The user can scroll using the scrollbars or the PanningTool, and the user can zoom in or out using Control-Mouse-Wheel.
In-place text editing
In-place text editing of any text in the diagram is supported. Just click on any text that is enabled for text editing.
Selection / Multiple Selection / Customizable adornments
GoXam controls support selection, and they make it easy to data-bind to the currently selected node. You can customize selection handles and tool handles (e.g. for resizing) by supplying custom data templates.
Predefined Shapes and Arrowheads
GoXam comes with over 195+ common shapes predefined for use in common node definitions. The sample shows all of these shapes.
XML Save/Restore
GoXam does not require any particular format or medium for storing diagrams. However, if you don’t mind using XML as the document format, and if you don’t have any particular XML schema to which you must adhere, and if you use our predefined model data classes, we do make it easy to save and load your model data in XML format. (The Org Chart Editor, State Chart, Logic Circuit and Flow Chart samples all demonstrate the use of XML save/restore.)