Working with Lists in Markdown Library

2 Jul 202619 minutes to read

Lists are essential elements in Markdown documents that organize and present information in a hierarchical and structured manner. The Syncfusion® Markdown library supports creating, modifying, and managing both numbered (ordered) and bulleted (unordered) lists in a Markdown document. Lists are represented by the MdListFormat class, which can be applied to a MdParagraph. The library supports up to nine nesting levels (level 0 to level 8), allowing for complex hierarchical structures.

The Syncfusion Markdown library supports two primary types of lists:

  • Numbered lists (Ordered lists): Lists with sequential numbering such as 1., 2., 3., etc.
  • Bulleted lists (Unordered lists): Lists with bullet markers such as -, *, or +.

Creating bulleted list

A bulleted list can be created by setting the ListFormat property of a paragraph and configuring it for an unordered list.

The following code example demonstrates how to create a simple bulleted list.

NOTE

Refer to the appropriate tabs in the code snippets section: C# for ASP.NET Core, Blazor, ASP.NET MVC, UWP, .NET MAUI, WinUI, WinForms and WPF; VB.NET for VB.NET applications.

// Creates a new MarkdownDocument instance
MarkdownDocument markdownDocument = new MarkdownDocument();
// Adds new paragraph to the document
MdParagraph paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Sets the list marker to "- " 
paragraph.ListFormat.ListValue = "- ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "First item";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Sets the list marker to "- " 
paragraph.ListFormat.ListValue = "- ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Second item";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Sets the list marker to "- " 
paragraph.ListFormat.ListValue = "- ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Third item";
// Saves the Markdown document to the file system
markdownDocument.Save("Output.md");
// Disposes the document
markdownDocument.Dispose();
' Creates a new MarkdownDocument instance
 Dim markdownDocument As MarkdownDocument = New MarkdownDocument()
 ' Adds new paragraph to the document
 Dim paragraph As MdParagraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "First item"
 ' Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Second item"
 ' Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Third item"
 ' Saves the Markdown document to the file system
 markdownDocument.Save("Output.md")
 ' Disposes the document
 markdownDocument.Dispose()

NOTE

The ListValue property specifies the complete list prefix including the marker and spacing. For bulleted lists, typical values are “- “, “* “, or “+ “.

Creating numbered list

A numbered list can be created by setting the ListFormat property of a paragraph and IsNumbered property to true and configuring the appropriate marker.

The following code example demonstrates how to create a simple numbered list.

// Creates a new MarkdownDocument instance
MarkdownDocument markdownDocument = new MarkdownDocument();
// Adds new paragraph to the document
MdParagraph paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list marker to "1. "
paragraph.ListFormat.ListValue = "1. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "First item";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list marker to "2. "
paragraph.ListFormat.ListValue = "2. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Second item";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list marker to "3. "
paragraph.ListFormat.ListValue = "3. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Third item";
// Saves the Markdown document to the file system
markdownDocument.Save("Output.md");
// Disposes the document
markdownDocument.Dispose();
' Creates a new MarkdownDocument instance
Dim markdownDocument As MarkdownDocument = New MarkdownDocument()
' Adds new paragraph to the document
Dim paragraph As MdParagraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list marker to "1. "
paragraph.ListFormat.ListValue = "1. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "First item"
' Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list marker to "2. "
paragraph.ListFormat.ListValue = "2. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Second item"
' Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list marker to "3. "
paragraph.ListFormat.ListValue = "3. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Third item"
' Saves the Markdown document to the file system
markdownDocument.Save("Output.md")
' Disposes the document
markdownDocument.Dispose()

NOTE

The ListValue property contains the actual number and marker for each item.

Creating multilevel bulleted list

Multilevel bulleted lists can be created by varying the ListLevel property. The list level ranges from 0 (root level) to 8 (deepest nested level), supporting up to nine levels of nesting.

The following code example demonstrates how to create a multilevel bulleted list.

// Creates a new MarkdownDocument instance
 MarkdownDocument markdownDocument = new MarkdownDocument();
 // Adds new paragraph to the document
 MdParagraph paragraph = markdownDocument.AddParagraph();
 // Initializes list formatting for the paragraph
 paragraph.ListFormat = new MdListFormat();
 // Sets the list level 
 paragraph.ListFormat.ListLevel = 0;
 // Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- ";
 // Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Parent item 1";
 // Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph();
 // Initializes list formatting for the paragraph
 paragraph.ListFormat = new MdListFormat();
 // Sets the list level 
 paragraph.ListFormat.ListLevel = 1;
 // Sets the list marker to "  - " 
 paragraph.ListFormat.ListValue = "  - ";
 // Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Child item 1";
 // Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph();
 // Initializes list formatting for the paragraph
 paragraph.ListFormat = new MdListFormat();
 // Sets the list level 
 paragraph.ListFormat.ListLevel = 1;
 // Sets the list marker to "  - " 
 paragraph.ListFormat.ListValue = "  - ";
 // Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Child item 2";
 // Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph();
 // Initializes list formatting for the paragraph
 paragraph.ListFormat = new MdListFormat();
 // Sets the list level 
 paragraph.ListFormat.ListLevel = 2;
 // Sets the list marker to "    - " 
 paragraph.ListFormat.ListValue = "    - ";
 // Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Grandchild item";
 // Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph();
 // Initializes list formatting for the paragraph
 paragraph.ListFormat = new MdListFormat();
 // Sets the list level 
 paragraph.ListFormat.ListLevel = 0;
 // Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- ";
 // Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Parent item 2";
 // Saves the Markdown document to the file system
 markdownDocument.Save("Output.md");
 // Disposes the document
 markdownDocument.Dispose();
' Creates a new MarkdownDocument instance
 Dim markdownDocument As MarkdownDocument = New MarkdownDocument()
 ' Adds new paragraph to the document
 Dim paragraph As MdParagraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list level 
 paragraph.ListFormat.ListLevel = 0
 ' Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Parent item 1"
 ' Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list level 
 paragraph.ListFormat.ListLevel = 1
 ' Sets the list marker to "  - " 
 paragraph.ListFormat.ListValue = "  - "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Child item 1"
 ' Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list level 
 paragraph.ListFormat.ListLevel = 1
 ' Sets the list marker to "  - " 
 paragraph.ListFormat.ListValue = "  - "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Child item 2"
 ' Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list level 
 paragraph.ListFormat.ListLevel = 2
 ' Sets the list marker to "    - " 
 paragraph.ListFormat.ListValue = "    - "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Grandchild item"
 ' Adds new paragraph to the document
 paragraph = markdownDocument.AddParagraph()
 ' Initializes list formatting for the paragraph
 paragraph.ListFormat = New MdListFormat()
 ' Sets the list level 
 paragraph.ListFormat.ListLevel = 0
 ' Sets the list marker to "- " 
 paragraph.ListFormat.ListValue = "- "
 ' Adds a text range to the paragraph
 paragraph.AddTextRange().Text = "Parent item 2"
 ' Saves the Markdown document to the file system
 markdownDocument.Save("Output.md")
 ' Disposes the document
 markdownDocument.Dispose()

NOTE

Each nesting level typically adds spaces of indentation. Level 0 has no indentation.

Creating multilevel numbered list

Multilevel numbered lists can be created by varying the ListLevel property. The list level ranges from 0 (root level) to 8 (deepest nested level), supporting up to nine levels of nesting. It combines hierarchical structure with sequential numbering at each level.

The following code example demonstrates how to create a multilevel numbered list.

// Creates a new MarkdownDocument instance
MarkdownDocument markdownDocument = new MarkdownDocument();
// Adds new paragraph to the document
MdParagraph paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list level to 0
paragraph.ListFormat.ListLevel = 0;
// Sets the list marker to "1. "
paragraph.ListFormat.ListValue = "1. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Main topic 1";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list level to 1
paragraph.ListFormat.ListLevel = 1;
// Sets the list marker to "  1. "
paragraph.ListFormat.ListValue = "  1. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Subtopic 1.1";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list level to 1
paragraph.ListFormat.ListLevel = 1;
// Sets the list marker to "  2. "
paragraph.ListFormat.ListValue = "  2. ";
paragraph.AddTextRange().Text = "Subtopic 1.2";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list level to 2
paragraph.ListFormat.ListLevel = 2;
// Sets the list marker to "    1. "
paragraph.ListFormat.ListValue = "    1. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Detail 1.2.1";
// Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph();
// Initializes list formatting for the paragraph
paragraph.ListFormat = new MdListFormat();
// Enables numbered list formatting
paragraph.ListFormat.IsNumbered = true;
// Sets the list level to 0
paragraph.ListFormat.ListLevel = 0;
// Sets the list marker to "2. "
paragraph.ListFormat.ListValue = "2. ";
// Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Main topic 2";
// Saves the Markdown document to the file system
markdownDocument.Save("Output.md");
// Disposes the document
markdownDocument.Dispose();
' Creates a new MarkdownDocument instance
Dim markdownDocument As MarkdownDocument = New MarkdownDocument()
' Adds new paragraph to the document
Dim paragraph As MdParagraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list level to 0
paragraph.ListFormat.ListLevel = 0
' Sets the list marker to "1. "
paragraph.ListFormat.ListValue = "1. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Main topic 1"
' Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list level to 1
paragraph.ListFormat.ListLevel = 1
' Sets the list marker to "  1. "
paragraph.ListFormat.ListValue = "  1. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Subtopic 1.1"
' Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list level to 1
paragraph.ListFormat.ListLevel = 1
' Sets the list marker to "  2. "
paragraph.ListFormat.ListValue = "  2. "
paragraph.AddTextRange().Text = "Subtopic 1.2"
' Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list level to 2
paragraph.ListFormat.ListLevel = 2
' Sets the list marker to "    1. "
paragraph.ListFormat.ListValue = "    1. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Detail 1.2.1"
' Adds new paragraph to the document
paragraph = markdownDocument.AddParagraph()
' Initializes list formatting for the paragraph
paragraph.ListFormat = New MdListFormat()
' Enables numbered list formatting
paragraph.ListFormat.IsNumbered = True
' Sets the list level to 0
paragraph.ListFormat.ListLevel = 0
' Sets the list marker to "2. "
paragraph.ListFormat.ListValue = "2. "
' Adds a text range to the paragraph
paragraph.AddTextRange().Text = "Main topic 2"
' Saves the Markdown document to the file system
markdownDocument.Save("Output.md")
' Disposes the document
markdownDocument.Dispose()

NOTE

Each nesting level typically adds spaces of indentation. Level 0 has no indentation.