Syncfusion blazor diagram
Skill syncfusion/blazor-ui-components-skills/skills/syncfusion-blazor-diagram
The skills guide Blazor development across all hosting models (Server, WASM, Hybrid, Auto) including data grid, chart, scheduler, rich text editor, gantt chart and more.
npx -y skills add syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-diagramAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
28.6 KB, as published. Nobody here has run it
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.