Getting Started with .NET MAUI Diagram
This guide shows how to add the Syncfusion .NET MAUI Diagram control to an application and create a simple diagram with two connected nodes.
Prerequisites
Before you begin, make sure that you have:
- A .NET MAUI development environment. See the official .NET MAUI installation guide.
- A supported version of the .NET SDK and Visual Studio for your Syncfusion release.
- A Syncfusion license key. See licensing.
Note: Review the release notes for the package version that you plan to install to confirm the supported .NET, .NET MAUI, Visual Studio, and target-platform versions.
Step 1: Create a .NET MAUI project
- Open Visual Studio.
- Select Create a new project.
- Choose .NET MAUI App, and then select Next.
- Enter a project name and location, and then select Create.
Step 2: Install the Diagram NuGet package
Install the Syncfusion.Maui.Diagram package in the project. You can use the NuGet Package Manager or run the following command in the Package Manager Console:
Install-Package Syncfusion.Maui.DiagramStep 3: Register Syncfusion controls
In MauiProgram.cs, add the Syncfusion hosting namespace and call ConfigureSyncfusionCore when building the application:
using Syncfusion.Maui.Core.Hosting;
namespace DiagramDemo;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureSyncfusionCore();
return builder.Build();
}
}Important: The Syncfusion core handler must be registered before the application uses Syncfusion controls.
Step 4: Register the license key
Register the license key during application startup, before the controls are used. Follow the instructions in the Syncfusion licensing guide.
Do not commit a license key to source control. Use the registration method and namespace required by the Syncfusion release used by your project.
Step 5: Add the Diagram control
Open MainPage.xaml and add the Diagram namespace and control:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:diagram="clr-namespace:Syncfusion.Maui.Diagram;assembly=Syncfusion.Maui.Diagram"
x:Class="DiagramDemo.MainPage">
<diagram:SfDiagram x:Name="diagram" />
</ContentPage>The x:Name value makes the control available from MainPage.xaml.cs.
Step 6: Add nodes and a connector
Open MainPage.xaml.cs. Add the required namespaces and assign the nodes and connector in the page constructor after InitializeComponent:
using System.Collections.ObjectModel;
using Syncfusion.Maui.Diagram;
namespace DiagramDemo;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
Node node1 = new Node
{
Id = "node1",
OffsetX = 300,
OffsetY = 60,
Width = 120,
Height = 40,
Shape = new BasicShape()
{
Shape = NodeBasicShapes.Ellipse
},
};
ShapeStyle style = new ShapeStyle();
style.Fill = Colors.CornflowerBlue;
style.StrokeColor = Colors.Black;
style.StrokeWidth = 2;
style.StrokeDashArray = "0,0";
node1.Style = style;
node1.Annotations.Add(
new ShapeAnnotation
{
Id = "Begin",
Content = "Begin",
});
diagram.Nodes.Add(node1);
Node node2 = new Node
{
Id = "node2",
OffsetX = 300,
OffsetY = 160,
Width = 120,
Height = 60,
Shape = new FlowShape()
{
Shape = NodeFlowShapes.PreDefinedProcess
},
};
node2.Style = style;
node2.Annotations.Add(
new ShapeAnnotation
{
Id = "Process",
Content = "Process",
});
diagram.Nodes.Add(node2);
Node node3 = new Node
{
Id = "node3",
OffsetX = 300,
OffsetY = 245,
Width = 40,
Height = 40,
Shape = new BasicShape()
{
Shape = NodeBasicShapes.Ellipse
},
};
node3.Style = style;
node3.Annotations.Add(
new ShapeAnnotation
{
Id = "End",
Content = "End",
});
diagram.Nodes.Add(node3);
Connector connector1 = new Connector
{
Id = "connector1",
SourceID = "node1",
TargetID = "node2",
};
diagram.Connectors.Add(connector1);
Connector connector2 = new Connector
{
Id = "connector2",
SourceID = "node2",
TargetID = "node3",
};
diagram.Connectors.Add(connector2);
}
}
OffsetX and OffsetY position the nodes on the diagram surface. SourceID and TargetID connect the connector to the corresponding node IDs.
Troubleshooting
The Diagram control is not displayed
- Confirm that the
Syncfusion.Maui.Diagrampackage is installed in the startup project. - Confirm that
ConfigureSyncfusionCoreis called inMauiProgram.cs. - Confirm that the XAML namespace uses the
Syncfusion.Maui.Diagramassembly. - Clean and rebuild the project after changing package or startup configuration.
The nodes are not visible
- Confirm that the nodes are assigned to
diagram.Nodes. - Check that the node offsets place them inside the visible diagram area.
- Confirm that every node has a unique
ID.
Next steps
- Learn about nodes and connectors.
- Connect nodes using ports.
- Save and restore a diagram with serialization.