diff --git a/MarkdownViewerGettingStarted/App.xaml b/MarkdownViewerGettingStarted/App.xaml new file mode 100644 index 0000000..12e513e --- /dev/null +++ b/MarkdownViewerGettingStarted/App.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/MarkdownViewerGettingStarted/App.xaml.cs b/MarkdownViewerGettingStarted/App.xaml.cs new file mode 100644 index 0000000..05a01ba --- /dev/null +++ b/MarkdownViewerGettingStarted/App.xaml.cs @@ -0,0 +1,15 @@ +namespace MarkdownViewerGettingStarted +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + } + + protected override Window CreateWindow(IActivationState? activationState) + { + return new Window(new AppShell()); + } + } +} \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/AppShell.xaml b/MarkdownViewerGettingStarted/AppShell.xaml new file mode 100644 index 0000000..1ab2d54 --- /dev/null +++ b/MarkdownViewerGettingStarted/AppShell.xaml @@ -0,0 +1,13 @@ + + + + + + diff --git a/MarkdownViewerGettingStarted/AppShell.xaml.cs b/MarkdownViewerGettingStarted/AppShell.xaml.cs new file mode 100644 index 0000000..42117c1 --- /dev/null +++ b/MarkdownViewerGettingStarted/AppShell.xaml.cs @@ -0,0 +1,10 @@ +namespace MarkdownViewerGettingStarted +{ + public partial class AppShell : Shell + { + public AppShell() + { + InitializeComponent(); + } + } +} diff --git a/MarkdownViewerGettingStarted/MainPage.xaml b/MarkdownViewerGettingStarted/MainPage.xaml new file mode 100644 index 0000000..19bf1fa --- /dev/null +++ b/MarkdownViewerGettingStarted/MainPage.xaml @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/MarkdownViewerGettingStarted/MainPage.xaml.cs b/MarkdownViewerGettingStarted/MainPage.xaml.cs new file mode 100644 index 0000000..b9621e9 --- /dev/null +++ b/MarkdownViewerGettingStarted/MainPage.xaml.cs @@ -0,0 +1,10 @@ +namespace MarkdownViewerGettingStarted +{ + public partial class MainPage : ContentPage + { + public MainPage() + { + InitializeComponent(); + } + } +} diff --git a/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.csproj b/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.csproj new file mode 100644 index 0000000..912e47d --- /dev/null +++ b/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.csproj @@ -0,0 +1,68 @@ + + + + net9.0-android;net9.0-ios;net9.0-maccatalyst + $(TargetFrameworks);net9.0-windows10.0.19041.0 + + + + + + + Exe + MarkdownViewerGettingStarted + true + true + enable + enable + + + MarkdownViewerGettingStarted + + + com.companyname.markdownviewergettingstarted + + + 1.0 + 1 + + + None + + 15.0 + 15.0 + 21.0 + 10.0.17763.0 + 10.0.17763.0 + 6.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.csproj.user b/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.csproj.user new file mode 100644 index 0000000..cd723ee --- /dev/null +++ b/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.csproj.user @@ -0,0 +1,31 @@ + + + + False + net9.0-windows10.0.19041.0 + Windows Machine + + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + Designer + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.sln b/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.sln new file mode 100644 index 0000000..a9aab35 --- /dev/null +++ b/MarkdownViewerGettingStarted/MarkdownViewerGettingStarted.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36401.2 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownViewerGettingStarted", "MarkdownViewerGettingStarted.csproj", "{FB437B7D-2702-4D2A-AAE4-B42A7768E4C5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FB437B7D-2702-4D2A-AAE4-B42A7768E4C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FB437B7D-2702-4D2A-AAE4-B42A7768E4C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FB437B7D-2702-4D2A-AAE4-B42A7768E4C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FB437B7D-2702-4D2A-AAE4-B42A7768E4C5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6EE30209-F96A-4C3E-8F7E-E47984B5F610} + EndGlobalSection +EndGlobal diff --git a/MarkdownViewerGettingStarted/MauiProgram.cs b/MarkdownViewerGettingStarted/MauiProgram.cs new file mode 100644 index 0000000..ae17df0 --- /dev/null +++ b/MarkdownViewerGettingStarted/MauiProgram.cs @@ -0,0 +1,27 @@ +using Microsoft.Extensions.Logging; +using Syncfusion.Maui.Core.Hosting; + +namespace MarkdownViewerGettingStarted +{ + public static class MauiProgram + { + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp() + .ConfigureSyncfusionCore() + .ConfigureFonts(fonts => + { + fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); + fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); + }); + +#if DEBUG + builder.Logging.AddDebug(); +#endif + + return builder.Build(); + } + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/Android/AndroidManifest.xml b/MarkdownViewerGettingStarted/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..e9937ad --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Platforms/Android/MainActivity.cs b/MarkdownViewerGettingStarted/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..02fabd6 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Android/MainActivity.cs @@ -0,0 +1,11 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace MarkdownViewerGettingStarted +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] + public class MainActivity : MauiAppCompatActivity + { + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/Android/MainApplication.cs b/MarkdownViewerGettingStarted/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..a1639fd --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Android/MainApplication.cs @@ -0,0 +1,16 @@ +using Android.App; +using Android.Runtime; + +namespace MarkdownViewerGettingStarted +{ + [Application] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/Android/Resources/values/colors.xml b/MarkdownViewerGettingStarted/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..c04d749 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Platforms/MacCatalyst/AppDelegate.cs b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000..807d14c --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace MarkdownViewerGettingStarted +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Entitlements.plist b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Entitlements.plist new file mode 100644 index 0000000..de4adc9 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Entitlements.plist @@ -0,0 +1,14 @@ + + + + + + + com.apple.security.app-sandbox + + + com.apple.security.network.client + + + + diff --git a/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Info.plist b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..7268977 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + UIDeviceFamily + + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Program.cs b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Program.cs new file mode 100644 index 0000000..264802b --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace MarkdownViewerGettingStarted +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/Tizen/Main.cs b/MarkdownViewerGettingStarted/Platforms/Tizen/Main.cs new file mode 100644 index 0000000..0bb514b --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Tizen/Main.cs @@ -0,0 +1,17 @@ +using System; +using Microsoft.Maui; +using Microsoft.Maui.Hosting; + +namespace MarkdownViewerGettingStarted +{ + internal class Program : MauiApplication + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/Tizen/tizen-manifest.xml b/MarkdownViewerGettingStarted/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..9defeda --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + maui-appicon-placeholder + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Platforms/Windows/App.xaml b/MarkdownViewerGettingStarted/Platforms/Windows/App.xaml new file mode 100644 index 0000000..a3a70a6 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/MarkdownViewerGettingStarted/Platforms/Windows/App.xaml.cs b/MarkdownViewerGettingStarted/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..9e128af --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Windows/App.xaml.cs @@ -0,0 +1,25 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace MarkdownViewerGettingStarted.WinUI +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MauiWinUIApplication + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } + +} diff --git a/MarkdownViewerGettingStarted/Platforms/Windows/Package.appxmanifest b/MarkdownViewerGettingStarted/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..644ace6 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,46 @@ + + + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MarkdownViewerGettingStarted/Platforms/Windows/app.manifest b/MarkdownViewerGettingStarted/Platforms/Windows/app.manifest new file mode 100644 index 0000000..a757dbf --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/MarkdownViewerGettingStarted/Platforms/iOS/AppDelegate.cs b/MarkdownViewerGettingStarted/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..807d14c --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,10 @@ +using Foundation; + +namespace MarkdownViewerGettingStarted +{ + [Register("AppDelegate")] + public class AppDelegate : MauiUIApplicationDelegate + { + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/iOS/Info.plist b/MarkdownViewerGettingStarted/Platforms/iOS/Info.plist new file mode 100644 index 0000000..0004a4f --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/MarkdownViewerGettingStarted/Platforms/iOS/Program.cs b/MarkdownViewerGettingStarted/Platforms/iOS/Program.cs new file mode 100644 index 0000000..264802b --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/iOS/Program.cs @@ -0,0 +1,16 @@ +using ObjCRuntime; +using UIKit; + +namespace MarkdownViewerGettingStarted +{ + public class Program + { + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } + } +} diff --git a/MarkdownViewerGettingStarted/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/MarkdownViewerGettingStarted/Platforms/iOS/Resources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..24ab3b4 --- /dev/null +++ b/MarkdownViewerGettingStarted/Platforms/iOS/Resources/PrivacyInfo.xcprivacy @@ -0,0 +1,51 @@ + + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategorySystemBootTime + NSPrivacyAccessedAPITypeReasons + + 35F9.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryDiskSpace + NSPrivacyAccessedAPITypeReasons + + E174.1 + + + + + + diff --git a/MarkdownViewerGettingStarted/Properties/launchSettings.json b/MarkdownViewerGettingStarted/Properties/launchSettings.json new file mode 100644 index 0000000..4f85793 --- /dev/null +++ b/MarkdownViewerGettingStarted/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "Project", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Resources/AppIcon/appicon.svg b/MarkdownViewerGettingStarted/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..9d63b65 --- /dev/null +++ b/MarkdownViewerGettingStarted/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Resources/AppIcon/appiconfg.svg b/MarkdownViewerGettingStarted/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/MarkdownViewerGettingStarted/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Resources/Fonts/OpenSans-Regular.ttf b/MarkdownViewerGettingStarted/Resources/Fonts/OpenSans-Regular.ttf new file mode 100644 index 0000000..33b3e0d Binary files /dev/null and b/MarkdownViewerGettingStarted/Resources/Fonts/OpenSans-Regular.ttf differ diff --git a/MarkdownViewerGettingStarted/Resources/Fonts/OpenSans-Semibold.ttf b/MarkdownViewerGettingStarted/Resources/Fonts/OpenSans-Semibold.ttf new file mode 100644 index 0000000..a1f8571 Binary files /dev/null and b/MarkdownViewerGettingStarted/Resources/Fonts/OpenSans-Semibold.ttf differ diff --git a/MarkdownViewerGettingStarted/Resources/Images/dotnet_bot.png b/MarkdownViewerGettingStarted/Resources/Images/dotnet_bot.png new file mode 100644 index 0000000..1d1b981 Binary files /dev/null and b/MarkdownViewerGettingStarted/Resources/Images/dotnet_bot.png differ diff --git a/MarkdownViewerGettingStarted/Resources/Raw/AboutAssets.txt b/MarkdownViewerGettingStarted/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..89dc758 --- /dev/null +++ b/MarkdownViewerGettingStarted/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with your package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/MarkdownViewerGettingStarted/Resources/Splash/splash.svg b/MarkdownViewerGettingStarted/Resources/Splash/splash.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/MarkdownViewerGettingStarted/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Resources/Styles/Colors.xaml b/MarkdownViewerGettingStarted/Resources/Styles/Colors.xaml new file mode 100644 index 0000000..30307a5 --- /dev/null +++ b/MarkdownViewerGettingStarted/Resources/Styles/Colors.xaml @@ -0,0 +1,45 @@ + + + + + + + #512BD4 + #ac99ea + #242424 + #DFD8F7 + #9880e5 + #2B0B98 + + White + Black + #D600AA + #190649 + #1f1f1f + + #E1E1E1 + #C8C8C8 + #ACACAC + #919191 + #6E6E6E + #404040 + #212121 + #141414 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MarkdownViewerGettingStarted/Resources/Styles/Styles.xaml b/MarkdownViewerGettingStarted/Resources/Styles/Styles.xaml new file mode 100644 index 0000000..86f574d --- /dev/null +++ b/MarkdownViewerGettingStarted/Resources/Styles/Styles.xaml @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/README.md b/README.md index e0c0391..bd7380e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,82 @@ -# .NET_MAUI_Markdown_Viewer_GettingStarted -Getting started with the .NET MAUI SfMarkdownViewer control +# Getting Started with .NET MAUI MarkdownViewer (SfMarkdownViewer) + +This guide details the initial setup and basic usage of the [SfMarkdownViewer]() control, offering insight into its ability to render Markdown content with various formatting capabilities across mobile and desktop platforms. + +### Initialize the MarkdownViewer Control + +1. To initialize the control, import the `Syncfusion.Maui.MarkdownViewer` namespace. +2. Add an [SfMarkdownViewer]() instance to your page. +3. To display Markdown content, assign a string to the `Source` property of the SfMarkdownViewer control. This string can contain standard Markdown syntax such as headings, bold text, lists, and images. + +#### XAML + +```xaml + + + + + + + + + +``` +#### C# + +```C# + public partial class MainPage : ContentPage + { + private const string markdownContent = @"# What is the Markdown Viewer? + The Markdown Viewer is a UI control in .NET MAUI that allows developers to render Markdown content with full formatting support. It was designed to work efficiently on both mobile and desktop platforms. The viewer supports headings, bold and italic text, lists, tables, images, code blocks and more. + + # Header 1 + Used for the main title or top-level heading in a Markdown document. + + ## Header 2 + Used to define major sections within your Markdown content. + + ### Table + + | | Column 1 | Column 2 | Column 3 | + |--------------|----------|----------|----------| + | Row 1 | Content | Content | Content | + | Row 2 | Content | Content | Content | + | Row 3 | Content | Content | Content |"; + + public MainPage() + { + InitializeComponent(); + SfMarkdownViewer markdownViewer = new SfMarkdownViewer(); + markdownViewer.Source = markdownContent; + Content = markdownViewer; + } + } +``` + +### Output +maui-markdown-viewer-gettingstarted + +## Troubleshooting + +### Path Too Long Exception + +If you are facing a "Path too long" exception when building this example project, close Visual Studio and rename the repository to a shorter name before building the project. + +Refer to the User Guide documentation on [getting started with .NET MAUI SfMarkdownViewer](https://help.syncfusion.com/maui/markdownviewer/getting-started).