Implementing Syncfusion WPF Diagram (SfDiagram)
The Syncfusion WPF Diagram control (SfDiagram) is a feature-rich diagramming library for building interactive flowcharts, org charts, BPMN diagrams, UML diagrams, network diagrams, and more in WPF applications. It provides nodes, connectors, annotations, ports, automatic layouts, and extensive customization options.
When to Use This Skill
- Creating any visual diagram in a WPF application (flowchart, org chart, mindmap, etc.)
- Adding nodes, connectors, annotations, or ports to a diagram
- Implementing BPMN or UML diagrams
- Setting up automatic diagram layouts (hierarchical, org, mindmap, flowchart, radial)
- Configuring a symbol palette (stencil) for drag-and-drop diagram building
- Binding a data source to generate diagrams dynamically
- Enabling diagram interaction (selection, drag, resize, zoom, keyboard shortcuts)
- Exporting or printing diagrams
- Customizing diagram appearance (gridlines, rulers, themes, page settings)
Quick Start
1. Install NuGet Package
Install-Package Syncfusion.SfDiagram.WPF
2. Add Namespace in XAML
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
3. Declare SfDiagram
<Window xmlns:syncfusion="http://schemas.syncfusion.com/wpf" ...>
<Grid>
<syncfusion:SfDiagram x:Name="diagram">
<syncfusion:SfDiagram.Nodes>
<syncfusion:NodeCollection/>
</syncfusion:SfDiagram.Nodes>
<syncfusion:SfDiagram.Connectors>
<syncfusion:ConnectorCollection/>
</syncfusion:SfDiagram.Connectors>
</syncfusion:SfDiagram>
</Grid>
</Window>
4. Add a Node and Connector in Code-Behind
using Syncfusion.UI.Xaml.Diagram;
// Add nodes
var node1 = new NodeViewModel { ID = "Start", UnitWidth = 120, UnitHeight = 40,
OffsetX = 200, OffsetY = 100, Shape = this.Resources["Ellipse"] };
var node2 = new NodeViewModel { ID = "End", UnitWidth = 120, UnitHeight = 40,
OffsetX = 200, OffsetY = 250, Shape = this.Resources["Rectangle"] };
(diagram.Nodes as NodeCollection).Add(node1);
(diagram.Nodes as NodeCollection).Add(node2);
// Add connector
var connector = new ConnectorViewModel { SourceNodeID = "Start", TargetNodeID = "End" };
(diagram.Connectors as ConnectorCollection).Add(connector);
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- Assembly deployment and NuGet setup
- Adding SfDiagram via XAML or code
- License key registration
- Merging built-in shape resource dictionaries
- Creating a minimal flowchart example
Nodes
📄 Read: references/nodes.md
- Defining and positioning nodes (XAML and C#)
- Built-in shapes and custom shape templates
- Node appearance: fill, stroke, shadow, tooltip
- Node groups and containers
- Node constraints (lock, select, resize, rotate)
- Node events
Connectors
📄 Read: references/connectors.md
- Defining connectors between nodes
- Connector types: straight, orthogonal, cubic Bezier, arc, quadratic
- Appearance: line style, arrows, dashes
- Connector routing and segments
- Connector constraints and interaction
- Connector splitting at intersection
Annotations
📄 Read: references/annotations.md
- Adding text labels to nodes and connectors
- Positioning and alignment of annotations
- Appearance customization (font, background, border)
- Editing annotations at runtime
- Annotation events
Ports
📄 Read: references/ports.md
- Defining connection ports on nodes
- Port types and visual appearance
- Hover effects on ports
- Automatic port creation
- Port-to-port connector creation
Interaction
📄 Read: references/interaction.md
- Selection (single, multi, select by type)
- Drag and drop nodes and connectors
- Resize, rotate, and flip
- Zoom and pan
- Keyboard shortcuts
- Tooltips and user handles
- Scroll settings, drag limits, snapping
Commands
📄 Read: references/commands.md
- Alignment (left, right, top, bottom, center)
- Clipboard operations (cut, copy, paste, duplicate)
- Delete nodes and connectors
- Undo/Redo via commands
- Nudge (arrow key movement)
- Rotate, flip, fit-to-page
- Spacing, sizing, Z-order
- Expand/collapse nodes
- Custom command manager
Automatic Layouts
📄 Read: references/automatic-layouts.md
- Hierarchical Tree Layout
- Organization Chart Layout
- Mind Map Layout
- Flowchart Layout
- Radial Tree Layout
- Force Directed Layout
- Layout configuration (spacing, orientation, margin)
BPMN Shapes
📄 Read: references/bpmn-shapes.md
- BPMN activities (tasks, sub-processes)
- BPMN events (start, intermediate, end)
- BPMN gateways
- BPMN data objects and data stores
- BPMN connectors and text annotations
- BPMN groups and symbol palette
UML Diagrams
📄 Read: references/uml-diagrams.md
- UML shape types (class, component, use case, activity, state, sequence)
- UML sequence diagram elements
- Configuring UML shapes and relationships
Swimlane
📄 Read: references/swimlane.md
- Creating swimlane diagrams
- Defining lanes and phases
- Swimlane symbol palette
- Swimlane interaction and customization
Stencil (Symbol Palette)
📄 Read: references/stencil.md
- Setting up a drag-and-drop symbol palette
- Symbol groups and categories
- Symbol filtering and search
- Adding custom shapes to palette
- Stencil appearance
Data Source
📄 Read: references/data-source.md
- Binding a flat data collection to diagram
- Parent-child data relationships
- Self-referencing hierarchical data
- Dynamic data update
Serialization & Undo/Redo
📄 Read: references/serialization-undo-redo.md
- Save and load diagram as XML
- Serialize to/from JSON or stream
- Undo/Redo history manager
- Custom undo/redo entries
Diagram Customization
📄 Read: references/diagram-customization.md
- Gridlines (visibility, style, snapping)
- Rulers (appearance, measurement units)
- Page settings (size, orientation, margins, background)
- Scroll settings and auto-scroll
- Themes and styles
- Localization
- Context menu
- Diagram Ribbon
- Drawing tools
- Overview control
Export & Print
📄 Read: references/export-print.md
- Export diagram to PNG, JPEG, BMP
- Export to PDF
- Print with print settings
- Preview before printing
Performance & Constraints
📄 Read: references/performance-constraints.md
- Virtualization for large diagrams
- Diagram-level constraints
- Node and connector constraints
- Performance optimization tips
Common Patterns
Pattern: Flowchart with Automatic Layout
When users want an auto-arranged diagram from data — read references/automatic-layouts.md and references/data-source.md.
Pattern: Org Chart from Business Data
Bind employee data with parent-child relationships and apply Organization Layout — read references/data-source.md and references/automatic-layouts.md.
Pattern: BPMN Process Diagram
For business process modeling with standardized shapes — read references/bpmn-shapes.md.
Pattern: Interactive Diagram Builder
For apps where users drag shapes from a palette — read references/stencil.md and references/interaction.md.
Pattern: Save/Load Diagram State
For persisting diagram state across sessions — read references/serialization-undo-redo.md.
1---2name: syncfusion-wpf-diagram3description: Complete guide for implementing Syncfusion WPF Diagram (SfDiagram) in Windows Presentation Foundation applications. Use this when working with diagrams like flowcharts, org charts, BPMN, or UML in WPF. Covers creating diagrams, adding nodes and connectors, configuring automatic layouts, implementing BPMN and UML shapes, setting up symbol palettes, data binding, export functionality, and appearance customization.4---56# Implementing Syncfusion WPF Diagram (SfDiagram)78The Syncfusion WPF Diagram control (SfDiagram) is a feature-rich diagramming library for building interactive flowcharts, org charts, BPMN diagrams, UML diagrams, network diagrams, and more in WPF applications. It provides nodes, connectors, annotations, ports, automatic layouts, and extensive customization options.910## When to Use This Skill1112- Creating any visual diagram in a WPF application (flowchart, org chart, mindmap, etc.)13- Adding nodes, connectors, annotations, or ports to a diagram14- Implementing BPMN or UML diagrams15- Setting up automatic diagram layouts (hierarchical, org, mindmap, flowchart, radial)16- Configuring a symbol palette (stencil) for drag-and-drop diagram building17- Binding a data source to generate diagrams dynamically18- Enabling diagram interaction (selection, drag, resize, zoom, keyboard shortcuts)19- Exporting or printing diagrams20- Customizing diagram appearance (gridlines, rulers, themes, page settings)2122## Quick Start2324### 1. Install NuGet Package25```powershell26Install-Package Syncfusion.SfDiagram.WPF27```2829### 2. Add Namespace in XAML30```xaml31xmlns:syncfusion="http://schemas.syncfusion.com/wpf"32```3334### 3. Declare SfDiagram35```xaml36<Window xmlns:syncfusion="http://schemas.syncfusion.com/wpf" ...>37 <Grid>38 <syncfusion:SfDiagram x:Name="diagram">39 <syncfusion:SfDiagram.Nodes>40 <syncfusion:NodeCollection/>41 </syncfusion:SfDiagram.Nodes>42 <syncfusion:SfDiagram.Connectors>43 <syncfusion:ConnectorCollection/>44 </syncfusion:SfDiagram.Connectors>45 </syncfusion:SfDiagram>46 </Grid>47</Window>48```4950### 4. Add a Node and Connector in Code-Behind51```csharp52using Syncfusion.UI.Xaml.Diagram;5354// Add nodes55var node1 = new NodeViewModel { ID = "Start", UnitWidth = 120, UnitHeight = 40,56 OffsetX = 200, OffsetY = 100, Shape = this.Resources["Ellipse"] };57var node2 = new NodeViewModel { ID = "End", UnitWidth = 120, UnitHeight = 40,58 OffsetX = 200, OffsetY = 250, Shape = this.Resources["Rectangle"] };59(diagram.Nodes as NodeCollection).Add(node1);60(diagram.Nodes as NodeCollection).Add(node2);6162// Add connector63var connector = new ConnectorViewModel { SourceNodeID = "Start", TargetNodeID = "End" };64(diagram.Connectors as ConnectorCollection).Add(connector);65```6667## Documentation and Navigation Guide6869### Getting Started70📄 **Read:** [references/getting-started.md](references/getting-started.md)71- Assembly deployment and NuGet setup72- Adding SfDiagram via XAML or code73- License key registration74- Merging built-in shape resource dictionaries75- Creating a minimal flowchart example7677### Nodes78📄 **Read:** [references/nodes.md](references/nodes.md)79- Defining and positioning nodes (XAML and C#)80- Built-in shapes and custom shape templates81- Node appearance: fill, stroke, shadow, tooltip82- Node groups and containers83- Node constraints (lock, select, resize, rotate)84- Node events8586### Connectors87📄 **Read:** [references/connectors.md](references/connectors.md)88- Defining connectors between nodes89- Connector types: straight, orthogonal, cubic Bezier, arc, quadratic90- Appearance: line style, arrows, dashes91- Connector routing and segments92- Connector constraints and interaction93- Connector splitting at intersection9495### Annotations96📄 **Read:** [references/annotations.md](references/annotations.md)97- Adding text labels to nodes and connectors98- Positioning and alignment of annotations99- Appearance customization (font, background, border)100- Editing annotations at runtime101- Annotation events102103### Ports104📄 **Read:** [references/ports.md](references/ports.md)105- Defining connection ports on nodes106- Port types and visual appearance107- Hover effects on ports108- Automatic port creation109- Port-to-port connector creation110111### Interaction112📄 **Read:** [references/interaction.md](references/interaction.md)113- Selection (single, multi, select by type)114- Drag and drop nodes and connectors115- Resize, rotate, and flip116- Zoom and pan117- Keyboard shortcuts118- Tooltips and user handles119- Scroll settings, drag limits, snapping120121### Commands122📄 **Read:** [references/commands.md](references/commands.md)123- Alignment (left, right, top, bottom, center)124- Clipboard operations (cut, copy, paste, duplicate)125- Delete nodes and connectors126- Undo/Redo via commands127- Nudge (arrow key movement)128- Rotate, flip, fit-to-page129- Spacing, sizing, Z-order130- Expand/collapse nodes131- Custom command manager132133### Automatic Layouts134📄 **Read:** [references/automatic-layouts.md](references/automatic-layouts.md)135- Hierarchical Tree Layout136- Organization Chart Layout137- Mind Map Layout138- Flowchart Layout139- Radial Tree Layout140- Force Directed Layout141- Layout configuration (spacing, orientation, margin)142143### BPMN Shapes144📄 **Read:** [references/bpmn-shapes.md](references/bpmn-shapes.md)145- BPMN activities (tasks, sub-processes)146- BPMN events (start, intermediate, end)147- BPMN gateways148- BPMN data objects and data stores149- BPMN connectors and text annotations150- BPMN groups and symbol palette151152### UML Diagrams153📄 **Read:** [references/uml-diagrams.md](references/uml-diagrams.md)154- UML shape types (class, component, use case, activity, state, sequence)155- UML sequence diagram elements156- Configuring UML shapes and relationships157158### Swimlane159📄 **Read:** [references/swimlane.md](references/swimlane.md)160- Creating swimlane diagrams161- Defining lanes and phases162- Swimlane symbol palette163- Swimlane interaction and customization164165### Stencil (Symbol Palette)166📄 **Read:** [references/stencil.md](references/stencil.md)167- Setting up a drag-and-drop symbol palette168- Symbol groups and categories169- Symbol filtering and search170- Adding custom shapes to palette171- Stencil appearance172173### Data Source174📄 **Read:** [references/data-source.md](references/data-source.md)175- Binding a flat data collection to diagram176- Parent-child data relationships177- Self-referencing hierarchical data178- Dynamic data update179180### Serialization & Undo/Redo181📄 **Read:** [references/serialization-undo-redo.md](references/serialization-undo-redo.md)182- Save and load diagram as XML183- Serialize to/from JSON or stream184- Undo/Redo history manager185- Custom undo/redo entries186187### Diagram Customization188📄 **Read:** [references/diagram-customization.md](references/diagram-customization.md)189- Gridlines (visibility, style, snapping)190- Rulers (appearance, measurement units)191- Page settings (size, orientation, margins, background)192- Scroll settings and auto-scroll193- Themes and styles194- Localization195- Context menu196- Diagram Ribbon197- Drawing tools198- Overview control199200### Export & Print201📄 **Read:** [references/export-print.md](references/export-print.md)202- Export diagram to PNG, JPEG, BMP203- Export to PDF204- Print with print settings205- Preview before printing206207### Performance & Constraints208📄 **Read:** [references/performance-constraints.md](references/performance-constraints.md)209- Virtualization for large diagrams210- Diagram-level constraints211- Node and connector constraints212- Performance optimization tips213214## Common Patterns215216### Pattern: Flowchart with Automatic Layout217When users want an auto-arranged diagram from data — read `references/automatic-layouts.md` and `references/data-source.md`.218219### Pattern: Org Chart from Business Data220Bind employee data with parent-child relationships and apply Organization Layout — read `references/data-source.md` and `references/automatic-layouts.md`.221222### Pattern: BPMN Process Diagram223For business process modeling with standardized shapes — read `references/bpmn-shapes.md`.224225### Pattern: Interactive Diagram Builder226For apps where users drag shapes from a palette — read `references/stencil.md` and `references/interaction.md`.227228### Pattern: Save/Load Diagram State229For persisting diagram state across sessions — read `references/serialization-undo-redo.md`.