
syncfusion-blazor-diagram
Build and troubleshoot Syncfusion Blazor diagrams using SfDiagramComponent. Trigger for flowcharts, org charts, mind maps, BPMN, UML sequence, swimlanes, symbol palettes, nodes/connectors/ports/annotations, layouts, data binding, serialization (load/save), export/print, and collaborative editing questions. Provide Blazor + Syncfusion setup steps, configuration patterns, and sample snippets.
- Installs
- 374
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-diagram- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads syncfusion-blazor-diagram automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Implementing Syncfusion Blazor Diagram
A comprehensive skill for building interactive diagrams with the Syncfusion Blazor Diagram component — flowcharts, organizational charts, mind maps, BPMN process diagrams, UML sequence diagrams, network diagrams, and more.
When to Use This Skill
Use this skill when you need to:
- Create flowcharts, org charts, mind maps, or network diagrams in Blazor
- Work with
SfDiagramComponent, nodes, connectors, or shapes - Configure automatic layouts (hierarchical, radial, mind map, org chart, flowchart)
- Implement BPMN process diagrams with BPMN shapes
- Build swimlane diagrams for process modeling
- Add symbol palettes for drag-and-drop diagram building
- Bind diagram data from a collection or remote source
- Implement diagram interactions (selection, drag, resize, zoom, pan)
- Export diagrams to PNG/JPEG/SVG or print them
- Serialize and restore diagram state (save/load)
- Enable collaborative real-time editing
- Add UML sequence diagrams
- Handle diagram events, annotations, and ports
Important: API Verification Required
API Verification Required: Always verify API class names, properties, and signatures by reading reference files (references/*.md) BEFORE generating code examples. Do not assume or infer class names.
⚠️ Before writing ANY code, review the Common Mistakes section directly below to avoid known invalid APIs and properties.
Quick Start
@using Syncfusion.Blazor.Diagram
<SfDiagramComponent Width="100%" Height="600px" Nodes="@nodes" Connectors="@connectors" />
@code {
DiagramObjectCollection<Node> nodes = new DiagramObjectCollection<Node>
{
new Node
{
ID = "node1", OffsetX = 150, OffsetY = 150,
Width = 100, Height = 50,
Style = new ShapeStyle { Fill = "#6BA5D7", StrokeColor = "white" },
Annotations = new DiagramObjectCollection<ShapeAnnotation>
{
new ShapeAnnotation { Content = "Start" }
}
}
};
DiagramObjectCollection<Connector> connectors = new DiagramObjectCollection<Connector>
{
new Connector { ID = "conn1", SourceID = "node1", TargetID = "node2" }
};
}
Common Patterns
| Goal | Reference |
|---|---|
| First diagram setup | references/getting-started.md |
| Add/configure nodes | references/nodes.md |
| Add/configure connectors | references/connectors.md |
| Use built-in shapes | references/shapes.md |
| Add text labels | references/annotations.md |
| Define connection points | references/ports.md |
| Org charts / auto-layout | references/layout.md |
| Swimlane diagrams | references/swimlane.md |
| BPMN process diagrams | references/bpmn.md |
| Drag-and-drop palette | references/symbol-palette.md |
| Bind data to diagram | references/data-binding.md |
| Selection, drag, zoom | references/interaction.md |
| Handle diagram events | references/events.md |
| Save and load diagrams | references/serialization.md |
| Export / print | references/export-print.md |
| CSS / theme styling | references/styling.md |
| UML sequence diagrams | references/uml-sequence.md |
| Real-time collaboration | references/collaborative-editing.md |
| Context menu, tooltips, rulers, localization | references/advanced-features.md |
| Miniature overview / bird's-eye navigation | references/overview-component.md |
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
- NuGet package installation (
Syncfusion.Blazor.Diagram) - Service registration and namespace imports
- Setup for Blazor Server, WebAssembly, MAUI
- CSS/theme configuration
- Minimal working diagram example
Nodes
📄 Read: references/nodes.md
- Creating and configuring nodes
- Node types: basic, flow shape, path, image, HTML, native
- Node positioning, sizing, z-order
- Node style (fill, stroke, opacity)
- Expand/collapse children
- Node events and interaction
Connectors
📄 Read: references/connectors.md
- Creating connectors between nodes or free-floating
- Segment types: straight, orthogonal, bezier
- Multiple segments per connector
- Arrows, line style, and decoration
- Connector interaction (bend, drag endpoints)
- Connector events
Shapes
📄 Read: references/shapes.md
- Built-in basic shapes (rectangle, ellipse, triangle, etc.)
- Flow shapes (process, decision, terminator, etc.)
- Path shapes (custom SVG paths)
- Image and HTML content shapes
- Native SVG shapes
- Choosing the right shape type
Annotations
📄 Read: references/annotations.md
- Adding text labels to nodes and connectors
- Annotation positioning and alignment
- Font, color, and style customization
- Inline editing of annotations
- Multiple annotations per element
- Annotation interaction events
- Interaction constraints:
AnnotationConstraintsflags,DragLimit(PathAnnotation) - Hyperlinks with
Hyperlink(Url,Content,OpenMode) - Events: SelectionChanging/Changed, PositionChanging/Changed, SizeChanging/Changed, RotationChanging/Changed, TextChanging/Changed
Ports
📄 Read: references/ports.md
- Connection ports (fixed connection points on nodes)
- Dynamic ports (created at runtime)
- Port positioning (relative and absolute)
- Port appearance and visibility
- Restricting connections to specific ports
Layout
📄 Read: references/layout.md
- Automatic layout overview and when to use each type
- Hierarchical tree layout (top-down, left-right)
- Organizational chart layout
- Mind map layout
- Radial tree layout
- Flowchart layout
- Force-directed tree layout
- Complex hierarchical layout
- Layout spacing, margin, and orientation settings
- Layout events and callbacks
await DoLayoutAsync()— refresh layout at runtime after adding/removing nodes
Swimlane
📄 Read: references/swimlane.md
- Creating swimlane diagrams
- Adding lanes and configuring lane properties
- Phase configuration (vertical/horizontal phases)
- Swimlane symbol palette integration
- Swimlane interactions
<SfDiagramComponent Height="600px" Swimlanes="@swimlanes" />
@code {
DiagramObjectCollection<Swimlane> swimlanes = new();
protected override void OnInitialized()
{
swimlanes.Add(new Swimlane
{
ID = "swimlane1",
OffsetX = 400, OffsetY = 300,
Width = 600, Height = 200,
Lanes = new DiagramObjectCollection<Lane>()
{
new Lane(){
Height = 100,
Header = new SwimlaneHeader(){
Width = 30,
Annotation = new ShapeAnnotation(){ Content = "Consumer" }
},
Children = new DiagramObjectCollection<Node>()
{
new Node(){Height = 50, Width = 50, LaneOffsetX = 250, LaneOffsetY = 30},
}
},
}
});
}
}
BPMN
📄 Read: references/bpmn.md
- BPMN shape types (events, activities, gateways, data)
- BPMN event types (start, end, intermediate, boundary)
- BPMN activity types (task, subprocess, call activity)
- BPMN gateway types (exclusive, parallel, inclusive, etc.)
- BPMN connectors (sequence flow, message flow, association)
- Data objects and data stores
- Expanded sub-process
- BPMN text annotation
// Exclusive gateway (XOR)
nodes.Add(new Node
{
ID = "gateway1", OffsetX = 300, OffsetY = 200, Width = 50, Height = 50,
Shape = new BpmnGateway
{
GatewayType = BpmnGatewayType.Exclusive
}
});
Symbol Palette
📄 Read: references/symbol-palette.md
- Setting up
SfSymbolPaletteComponent - Defining palette groups and symbols
- Custom symbols and stencils
- Drag-and-drop from palette to diagram
- Palette search and customization
Data Binding
📄 Read: references/data-binding.md
- Binding diagram from a flat list or IEnumerable
- Hierarchical data binding (parent-child relationships)
- Remote data source integration
- Runtime CRUD:
await ReadDataAsync(query?),await InsertDataAsync(data),await UpdateDataAsync(keyField, data),await DeleteDataAsync(keyField, value) await RefreshDataSourceAsync()— reload all data and rebuild layout- Mapping data fields to node/connector properties
Interaction & Commands
📄 Read: references/interaction.md
- Selection:
Select(collection, multipleSelection?),SelectAll(),UnSelect(obj),ClearSelection() - Drag, resize, and rotate elements (user interaction + programmatic)
- Programmatic transforms:
Drag(obj, tx, ty),Rotate(obj, angle, pivot?),Scale(obj, sx, sy, pivot) - Zoom and pan: mouse wheel, toolbar,
Zoom(factor, focusPoint),ResetZoom(),Pan(hOffset, vOffset, focusPoint?) BringIntoView(DiagramRect)— scroll viewport to show a regionBringIntoCenter(DiagramRect)— scroll viewport to center a regionFitToPage(FitOptions?)— fit content to viewport (sync;FitMode.Width/Height/Both,DiagramRegion.Content/PageSettings)Nudge(Direction, int?)— move selected elements by pixels; default 1px;Direction.Top/Bottom/Left/Right- Z-Order:
BringToFront(),BringForward(),SendBackward(),SendToBack()— mustSelect()first - Clipboard:
Copy(),Cut(),Paste(collection?),Delete(collection?) - Group/Ungroup:
Group(),Ungroup(),AddChildAsync(group, child),RemoveChild(group, child) - Inline text editing:
StartTextEdit(obj, annotationId?) - Keyboard shortcuts (built-in table) and
CommandManager(custom/override shortcuts via child component) CommandManagerusesKeyboardCommand+KeyGesture(DiagramKeys+ModifierKeys) +CommandKeyArgs- Snapping to grid or objects
- Alignment, spacing, and sizing commands (
SetAlign,SetDistribute,SetSameSize— all sync) - User handles (custom action buttons on selection)
- Undo/redo:
Undo(),Redo()(sync);StartGroupAction()/EndGroupAction()for batched undo steps - History:
AddHistoryEntry(entry),ClearHistory() - Utility:
GetObject(id),GetPageBounds(x?, y?),Clear()(removes all elements) - Batch updates:
BeginUpdate()+await EndUpdateAsync()— group multiple changes into one render pass - Add multiple elements:
await AddDiagramElementsAsync(DiagramObjectCollection<NodeBase>)
Events
📄 Read: references/events.md
- Diagram-level events (Created, Click, Drop)
- Node events (NodeCreating, PositionChanged, SizeChanged)
- Connector events (ConnectionChanged, SegmentChanged)
- Selection events (SelectionChanged)
- History change events (HistoryChanged for undo/redo)
- Event argument types and usage patterns
Serialization
📄 Read: references/serialization.md
- Saving diagram state as JSON string
- Loading a diagram from saved JSON
- Custom serialization properties
- Partial diagram save and restore patterns
Export & Print
📄 Read: references/export-print.md
- Exporting to PNG, JPEG, SVG formats
- Export region options (diagram, page, content)
- Scale and margin settings
- Print configuration
- Custom page size and orientation
- Fit diagram to single page on print
Styling
📄 Read: references/styling.md
- CSS class customization (
CssClassproperty) - Built-in themes (Material, Bootstrap, Fluent, Tailwind)
- Node and connector style properties
- Selection and hover styles
- Theme Studio customization
- CSS variable overrides
UML Sequence Diagrams
📄 Read: references/uml-sequence.md
- UML sequence diagram setup
- Lifelines and activation boxes
- Message types (synchronous, asynchronous, return, create, destroy)
- UML interaction shapes and connectors
await UpdateFromModelAsync()— refresh diagram after programmatic model changes
UML Class Diagram
📄 Read: references/uml-class-diagram.md
- Creating Class, Interface, and Enumeration nodes with attributes, methods, and members
- Visibility scopes, method parameters, separator rows
- Styling header, section headers (
UmlSectionHeaderSettings), and row-levelTextStyle - Six relationship types: Association, Aggregation, Composition, Inheritance, Dependency, Realization
- Directional / bi-directional association flow; multiplicity labels
- Adding and removing members at runtime (
Add,RemoveAt,Remove) CollectionChanging/CollectionChangedevents; inline text editing (F2,StartTextEdit)- Symbol Palette integration for drag-and-drop UML shapes
Collaborative Editing
📄 Read: references/collaborative-editing.md
- Setting up real-time collaborative diagram editing
- SignalR hub configuration
- Blazor Server and WASM app integration
- Handling real-time sync and conflict resolution
- Delta sync:
GetDiagramUpdates(HistoryChangedEventArgs)+await SetDiagramUpdatesAsync(updates)— efficient change propagation
Overview Component
📄 Read: references/overview-component.md
- Adding
SfDiagramOverviewComponentas a miniature thumbnail panel - Linking the overview to the main diagram via
SourceID/ID - Controlling panel size with
WidthandHeight - Zoom and pan interactions (drag, resize, click, draw-region)
- Enabling or disabling interactions with
DiagramOverviewConstraints - Required
@using Syncfusion.Blazor.Diagram.Overviewnamespace.
@using Syncfusion.Blazor.Diagram
@using Syncfusion.Blazor.Diagram.Overview
@using System.Collections.ObjectModel
<SfDiagramComponent ID="element"
Width="100%"
Height="500px">
</SfDiagramComponent>
<!-- Overview panel linked to the diagram above -->
<SfDiagramOverviewComponent Height="150px" SourceID="element" />
Advanced Features
📄 Read: references/advanced-features.md
- Context menu (built-in and custom items)
- Tooltips for nodes, connectors, ports, user handles
- Programmatic tooltips:
await ShowTooltipAsync(obj)/await HideTooltipAsync(obj)— requiresOpensOn = "Custom" - Gridlines and rulers
- Scroll settings and page settings
- Container and group nodes
- Flip (horizontal/vertical)
- Constraints (restricting behavior per element)
- Localization (static text translation)
- Accessibility (WCAG 2.1, keyboard navigation)
- Migration from classic to native diagram
Common Mistakes
Annotation Editing
⚠️
AllowEditingdoes NOT exist onShapeAnnotationorPathAnnotation.
Inline editing is on by default — no property is needed to enable it.
To disable editing, setConstraints = AnnotationConstraints.ReadOnly:// ❌ Wrong — CS0117: AllowEditing does not exist new ShapeAnnotation { Content = "Label", AllowEditing = false } // ✅ Correct — use AnnotationConstraints.ReadOnly to disable editing new ShapeAnnotation { Content = "Label", Constraints = AnnotationConstraints.ReadOnly }
EndUpdateAsync Method
⚠️ Always use
EndUpdateAsync()(async) —EndUpdate()(sync, non-async) does NOT exist and will cause a compile error.
UseBeginUpdate()/EndUpdateAsync()when changing multiple properties at once —awaitis required:// ❌ Wrong — EndUpdate() does not exist diagram.BeginUpdate(); // ... changes ... diagram.EndUpdate(); // ✅ Correct — EndUpdateAsync is async diagram.BeginUpdate(); // ... changes ... await diagram.EndUpdateAsync();
Click Event
⚠️
ClickEventArgsname collision: If your page also uses@using Syncfusion.Blazor.Navigations(or Buttons),
ClickEventArgsbecomes ambiguous. Always qualify it:// ✅ Use the fully qualified type in the handler signature private void OnClick(Syncfusion.Blazor.Diagram.ClickEventArgs args) { }
⚠️
args.Countis NOT anintfield — it is a method that returns anint.
Do NOT compare it directly with==inline without storing the result first:// ❌ Wrong — CS0019: Operator '==' cannot be applied to operands of type 'method group' and 'int' if (args.Count == 2) // ✅ Correct — store result then compare int clickCount = args.Count; if (clickCount == 2) { /* double-click */ }
SizeChanged Event
⚠️
SizeChangedEventArgs.Elementis typed asDiagramSelectionSettings, notNode.
Pattern-matchingargs.Element is Node nalways fails withCS8121.
Cast toDiagramSelectionSettingsand read.Nodes[0]to get the resized node:// ❌ Wrong — CS8121: DiagramSelectionSettings cannot match Node if (args.Element is Node n) { } // ✅ Correct — Element is DiagramSelectionSettings if (args.Element is DiagramSelectionSettings sel && sel.Nodes.Count > 0) { var node = sel.Nodes[0]; double w = args.NewValue.Width; double h = args.NewValue.Height; }
⚠️
args.NewValue.Widthandargs.NewValue.Heightare plaindouble, notdouble?.
Using??on them causesCS0019. Assign them directly:// ❌ Wrong — CS0019 double w = args.NewValue.Width ?? 0; // ✅ Correct double w = args.NewValue.Width;
Selection Changed Event
⚠️
SelectionChangedEventArgsname collision: If your page also uses@using Syncfusion.Blazor.Buttons
(or other Syncfusion packages),SelectionChangedEventArgsbecomes ambiguous. Always qualify it:// ✅ Fully qualified private void OnSelectionChanged(Syncfusion.Blazor.Diagram.SelectionChangedEventArgs args) { }
⚠️
args.NewValueis aDiagramSelectionSettingsobject — NOT aNode, NOT a collection:
- Pattern-matching
args.NewValue is Nodealways fails withCS8121- Iterating
args.NewValueas a collection fails — it is a single settings object- The only correct approach is to read
_diagram.SelectionSettings.Nodes/.Connectors:// ❌ Wrong — CS8121: DiagramSelectionSettings cannot match Node if (args.NewValue is Node n) { } // ❌ Wrong — DiagramSelectionSettings is not IEnumerable foreach (var item in args.NewValue) { } // ✅ Correct — use SelectionSettings on the diagram reference foreach (var node in _diagram.SelectionSettings.Nodes) Console.WriteLine(node.ID); foreach (var conn in _diagram.SelectionSettings.Connectors) Console.WriteLine(conn.ID);
Text Changed Event
⚠️
TextChangedEventArgsdoes NOT exist — using it causesCS0246.
The correct event args type isTextChangeEventArgs(nod):// ❌ Wrong — CS0246: TextChangedEventArgs not found private void OnTextChanged(TextChangedEventArgs args) { } // ✅ Correct private void OnTextChanged(TextChangeEventArgs args) { }
Drag Start Event
⚠️
DragStartEventArgsis ambiguous whenSyncfusion.Blazor.Popups(or other packages that exposeDragStartEventArgs) is also referenced.
Always qualify it asSyncfusion.Blazor.Diagram.DragStartEventArgs:// ❌ Wrong — CS0104: ambiguous reference between Diagram and Popups private void OnDragStart(DragStartEventArgs args) { } // ✅ Correct — fully qualified private void OnDragStart(Syncfusion.Blazor.Diagram.DragStartEventArgs args) { }
⚠️
DragEnterEventArgsdoes NOT exist inSyncfusion.Blazor.Diagram.
There is noDragEnterevent onSfDiagramComponentthat receives aDragEnterEventArgs.
The available drag events onSfDiagramComponentare:DragStart,Dragging,DragLeave,DragDrop— all for SymbolPalette drag-and-drop only.
For tracking when a node is being moved (internal drag), usePositionChanged:// ❌ Wrong — DragEnterEventArgs does not exist private void OnDragEnter(DragEnterEventArgs args) { } // ❌ Wrong — OnPositionChange does not exist on SfDiagramComponent <SfDiagramComponent OnPositionChange="OnPositionChange" /> // ✅ Correct — use PositionChanged <SfDiagramComponent PositionChanged="OnPositionChanged" /> private void OnPositionChanged(PositionChangedEventArgs args) { if (args.Element is Node n) Console.WriteLine($"Node {n.ID} moved to ({n.OffsetX}, {n.OffsetY})"); }
Snap Distance
⚠️
SnapObjectDistancedoes NOT exist onSnapSettings— using it causesInvalidOperationException: does not have a property matching the name 'SnapObjectDistance'.
The correct property name isSnapDistance:@* ❌ Wrong — SnapObjectDistance does not exist *@ <SnapSettings SnapObjectDistance="5" /> @* ✅ Correct *@ <SnapSettings Constraints="SnapConstraints.SnapToObject" SnapDistance="5" />
Styling
⚠️
CssClassdoes NOT exist onSfDiagramComponent— using it causes
InvalidOperationException: Object of type 'SfDiagramComponent' does not have a property matching the name 'CssClass'.
Wrap the component in a<div>with a scoping class instead:@* ❌ Wrong — CssClass does not exist on SfDiagramComponent *@ <SfDiagramComponent CssClass="my-diagram" /> @* ✅ Correct — use a wrapper div *@ <div class="my-diagram"> <SfDiagramComponent ... /> </div>
Phase Offset Property
⚠️
Phase.Offsetdoes NOT exist — using it causes a compile error.
UsePhase.Widthto set the size of a phase in a swimlane:// ❌ Wrong — Offset does not exist on Phase new Phase { ID = "ph1", Offset = 220 } // ✅ Correct — use Width new Phase { ID = "ph1", Width = 220 }
Lane Constraints Property
⚠️
Lane.Constraintsdoes NOT exist andLaneConstraintsenum does NOT exist.
Individual lanes cannot have constraints set via aConstraintsproperty.
To restrict swimlane-level interactions, useSwimlaneConstraintson theSwimlaneobject itself:// ❌ Wrong — Lane.Constraints and LaneConstraints do not exist lane.Constraints = LaneConstraints.Default & ~LaneConstraints.ResizeEntries; // ✅ Correct — set constraints on the Swimlane object swimlane.Constraints = SwimlaneConstraints.Default & ~SwimlaneConstraints.Interaction;
FitMode.Page Value
⚠️
FitMode.Pagedoes NOT exist — using it causesCS0117.
The correct values forFitModeareFitMode.WidthandFitMode.Height:// ❌ Wrong — FitMode.Page does not exist new FitOptions { Mode = FitMode.Page } // ✅ Correct — use FitMode.Width or FitMode.Height new FitOptions { Mode = FitMode.Width, Region = DiagramRegion.Content }
LoadDiagram Method
⚠️
SfDiagramComponent.LoadDiagram()does NOT exist — using it causes a compile error.
Use the async versionLoadDiagramAsync()instead:// ❌ Wrong — LoadDiagram() does not exist diagram.LoadDiagram(savedJson); // ✅ Correct — use LoadDiagramAsync await diagram.LoadDiagramAsync(savedJson);
FitToPageAsync Method
⚠️
SfDiagramComponent.FitToPageAsync()does NOT exist — using it causes a compile error.
Use the non-async overloadFitToPage()instead:// ❌ Wrong — FitToPageAsync does not exist await diagram.FitToPageAsync(new FitOptions { Mode = FitMode.Width }); // ✅ Correct — use FitToPage (synchronous) diagram.FitToPage(new FitOptions { Mode = FitMode.Width, Region = DiagramRegion.Content });
BasicShapes Enum
⚠️
BasicShapesdoes NOT exist — useNodeBasicShapesinstead:// ❌ Wrong new BasicShape { Shape = BasicShapes.Rectangle } // ✅ Correct new BasicShape { Shape = NodeBasicShapes.Rectangle }
DiagramThickness Constructor
⚠️
DiagramThicknessdoes NOT have a 4-argument constructor — using it causesCS1729: does not contain a constructor that takes 4 arguments.
Use the object initializer syntax with named properties instead:// ❌ Wrong — CS1729: no 4-argument constructor new DiagramThickness(20, 50, 20, 20) // ✅ Correct — use object initializer with named properties new DiagramThickness { Left = 20, Top = 50, Right = 20, Bottom = 20 } // ✅ Correct — set only the sides you need new DiagramThickness { Top = 50 }
PathAnnotation DragLimit Type
⚠️
PathAnnotation.DragLimittype isDiagramThickness— NOTMargin.
Usingnew Margin { ... }causes a type mismatch compile error (CS0029).
Always usenew DiagramThickness { ... }forDragLimit:// ❌ Wrong — CS0029: Margin cannot be assigned to DiagramThickness new PathAnnotation { Constraints = AnnotationConstraints.Interaction, DragLimit = new Margin { Left = 40, Right = 40, Top = 20, Bottom = 20 } } // ✅ Correct — DiagramThickness with object initializer new PathAnnotation { Constraints = AnnotationConstraints.Interaction, DragLimit = new DiagramThickness { Left = 40, Right = 40, Top = 20, Bottom = 20 } }
ScrollSettings EnableAutoScroll Property
⚠️
CanAutoScrolldoes NOT exist onScrollSettings— using it causesInvalidOperationException: does not have a property matching the name 'CanAutoScroll'.
The correct property name isEnableAutoScroll:@* ❌ Wrong — CanAutoScroll does not exist *@ <ScrollSettings CanAutoScroll="true" /> @* ✅ Correct *@ <ScrollSettings EnableAutoScroll="true" />
Zoom, Undo, and Redo Methods
⚠️
ZoomAsync(),UndoAsync(), andRedoAsync()do NOT exist — using them causes a compile error.
Use the non-async overloadsZoom(),Undo(), andRedo()instead:// ❌ Wrong — ZoomAsync, UndoAsync, RedoAsync do not exist await _diagram.ZoomAsync(1.2, new DiagramPoint { X = 300, Y = 300 }); await _diagram.UndoAsync(); await _diagram.RedoAsync(); // ✅ Correct — use non-async overloads _diagram.Zoom(1.2, new DiagramPoint { X = 300, Y = 300 }); _diagram.Undo(); _diagram.Redo();
Overview Component Namespace
⚠️
SfDiagramOverviewComponentrequires an additional@using— it lives inSyncfusion.Blazor.Diagram.Overview, NOT inSyncfusion.Blazor.Diagram. Forgetting it causesCS0246:@* ❌ Wrong — SfDiagramOverviewComponent not found without the Overview namespace *@ @using Syncfusion.Blazor.Diagram @* ✅ Correct — both namespaces required *@ @using Syncfusion.Blazor.Diagram @using Syncfusion.Blazor.Diagram.Overview
⚠️
SourceIDmust exactly match theIDset onSfDiagramComponent— theIDis NOT auto-generated; you must set it explicitly. A mismatch (including case) renders the overview empty:@* ❌ Wrong — ID not set on the diagram; SourceID has nothing to link to *@ <SfDiagramComponent Width="100%" Height="500px" Nodes="@_nodes" /> <SfDiagramOverviewComponent SourceID="myDiagram" Height="150px" /> @* ✅ Correct — ID set on diagram, SourceID matches exactly *@ <SfDiagramComponent ID="myDiagram" Width="100%" Height="500px" Nodes="@_nodes" /> <SfDiagramOverviewComponent SourceID="myDiagram" Height="150px" />
⚠️ Do NOT nest
SfDiagramOverviewComponentinsideSfDiagramComponent— the overview is a sibling component rendered outside the diagram markup.
FAQ
What does the syncfusion-blazor-diagram skill do?
Build and troubleshoot Syncfusion Blazor diagrams using SfDiagramComponent. Trigger for flowcharts, org charts, mind maps, BPMN, UML sequence, swimlanes, symbol palettes, nodes/connectors/ports/annotations, layouts, data binding, serialization (load/save), export/print, and collaborative editing questions. Provide Blazor + Syncfusion setup steps, configuration patterns, and sample snippets.
How do I install syncfusion-blazor-diagram?
Run npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-diagram in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/syncfusion-blazor-diagram/ (personal) or .claude/skills/syncfusion-blazor-diagram/ (project).
Which AI agents can use syncfusion-blazor-diagram?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is syncfusion-blazor-diagram safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains syncfusion-blazor-diagram?
It is published by syncfusion in syncfusion/blazor-ui-components-skills. It has 374 recorded installs.
More from syncfusion/blazor-ui-components-skills
syncfusion-blazor-datagrid
syncfusion/blazor-ui-components-skills
Implements the Syncfusion Blazor DataGrid (SfGrid) for efficient tabular operations such as sorting, filtering, paging, grouping, editing, aggregates, virtualization, lazy‑load grouping, and row or column spanning. Use this skill when building data‑grid workflows in Blazor Server, WebAssembly, Web App, or MAUI applications. Supports Excel/PDF export, virtual or infinite scrolling, customizable templates, and grid state persistence for consistent and optimized data‑grid behavior.
syncfusion-blazor-common
syncfusion/blazor-ui-components-skills
Open the skill to read its SKILL.md instructions.
syncfusion-blazor-dropdowns
syncfusion/blazor-ui-components-skills
Comprehensive guide for implementing Syncfusion Blazor dropdown components including AutoComplete, ComboBox, DropDown List, MultiSelect Dropdown, and ListBox. Use this when building selection interfaces, data binding, filtering, cascading dropdowns, custom templates, and accessible dropdown experiences in Blazor applications. Covers all dropdown components from Syncfusion.Blazor.DropDowns package.
syncfusion-blazor-charts
syncfusion/blazor-ui-components-skills
Implement Syncfusion Blazor Chart (SfChart) component for comprehensive data visualization. Use this when creating line charts, bar/column charts, area charts, financial charts, or statistical visualizations. This skill covers 30+ chart types including scatter plots, bubble charts, candlestick charts, and specialized charts like waterfall, histogram, and polar charts for Blazor applications.
syncfusion-blazor-popups
syncfusion/blazor-ui-components-skills
Implement modal and modeless dialogs using Syncfusion Blazor Dialog component. Use this skill when creating dialogs, popup windows, modal confirmations, custom forms, or interactive overlay windows. Covers templates, events, positioning, animations, accessibility, and advanced customization.
syncfusion-blazor-license
syncfusion/blazor-ui-components-skills
Generate, register, secure, validate, and troubleshoot Syncfusion Blazor license keys across all Blazor project types
Popular docs & writing skills
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
lark-markdown
open.feishu.cn
飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。
writing-beats
mattpocock/skills
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
writing-for-agents
mattpocock/skills
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.