diff --git a/components/MarkdownTextBlock/src/HtmlWriter.cs b/components/MarkdownTextBlock/src/HtmlWriter.cs
index a581583bb..1b2557992 100644
--- a/components/MarkdownTextBlock/src/HtmlWriter.cs
+++ b/components/MarkdownTextBlock/src/HtmlWriter.cs
@@ -36,7 +36,13 @@ public static void WriteHtml(WinUIRenderer renderer, HtmlNodeCollection nodes)
                         var myHyperlinkButton = new MyHyperlinkButton(node, renderer.Config.BaseUrl);
                         myHyperlinkButton.ClickEvent += (sender, e) =>
                         {
-                            renderer.MarkdownTextBlock.RaiseLinkClickedEvent(((HyperlinkButton)sender).NavigateUri);
+                            var button = (HyperlinkButton)sender;
+                            var uri = button.NavigateUri;
+                            var handled = renderer.MarkdownTextBlock.RaiseLinkClickedEvent(uri);
+                            if (handled)
+                            {
+                                button.NavigateUri = null;
+                            }
                         };
                         hyperLink = myHyperlinkButton;
                     }
@@ -45,7 +51,12 @@ public static void WriteHtml(WinUIRenderer renderer, HtmlNodeCollection nodes)
                         var myHyperlink = new MyHyperlink(node, renderer.Config.BaseUrl);
                         myHyperlink.ClickEvent += (sender, e) =>
                         {
-                            renderer.MarkdownTextBlock.RaiseLinkClickedEvent(sender.NavigateUri);
+                            var uri = sender.NavigateUri;
+                            var handled = renderer.MarkdownTextBlock.RaiseLinkClickedEvent(uri);
+                            if (handled)
+                            {
+                                sender.NavigateUri = null;
+                            }
                         };
                         hyperLink = myHyperlink;
                     }
diff --git a/components/MarkdownTextBlock/src/LinkClickedEventArgs.cs b/components/MarkdownTextBlock/src/LinkClickedEventArgs.cs
index dc48ea601..3748c6bd4 100644
--- a/components/MarkdownTextBlock/src/LinkClickedEventArgs.cs
+++ b/components/MarkdownTextBlock/src/LinkClickedEventArgs.cs
@@ -7,6 +7,10 @@ namespace CommunityToolkit.WinUI.Controls;
 public class LinkClickedEventArgs : EventArgs
 {
     public Uri Uri { get; }
+    /// 
+    /// Set to true in your handler to indicate the link click was handled and default navigation should be suppressed.
+    /// 
+    public bool Handled { get; set; }
 
     public LinkClickedEventArgs(Uri uri)
     {
diff --git a/components/MarkdownTextBlock/src/MarkdownTextBlock.xaml.cs b/components/MarkdownTextBlock/src/MarkdownTextBlock.xaml.cs
index 9f2f38ca2..d3a55829b 100644
--- a/components/MarkdownTextBlock/src/MarkdownTextBlock.xaml.cs
+++ b/components/MarkdownTextBlock/src/MarkdownTextBlock.xaml.cs
@@ -23,7 +23,16 @@ public partial class MarkdownTextBlock : Control
 
     public event EventHandler? OnLinkClicked;
 
-    internal void RaiseLinkClickedEvent(Uri uri) => OnLinkClicked?.Invoke(this, new LinkClickedEventArgs(uri));
+    internal bool RaiseLinkClickedEvent(Uri uri)
+    {
+        if (OnLinkClicked == null)
+        {
+            return false;
+        }
+        var args = new LinkClickedEventArgs(uri);
+        OnLinkClicked?.Invoke(this, args);
+        return args.Handled;
+    }
 
     private static void OnConfigChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
     {
diff --git a/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Inlines/LinkInlineRenderer.cs b/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Inlines/LinkInlineRenderer.cs
index a14091eca..08b290ea1 100644
--- a/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Inlines/LinkInlineRenderer.cs
+++ b/components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Inlines/LinkInlineRenderer.cs
@@ -33,7 +33,15 @@ protected override void Write(WinUIRenderer renderer, LinkInline link)
                 var myHyperlinkButton = new MyHyperlinkButton(link, renderer.Config.BaseUrl);
                 myHyperlinkButton.ClickEvent += (sender, e) =>
                 {
-                    renderer.MarkdownTextBlock.RaiseLinkClickedEvent(((HyperlinkButton)sender).NavigateUri);
+                    var button = (HyperlinkButton)sender;
+                    var uri = button.NavigateUri;
+                    var handled = renderer.MarkdownTextBlock.RaiseLinkClickedEvent(uri);
+                    if (handled)
+                    {
+                        // Suppress default navigation by clearing NavigateUri just for this invocation
+                        button.NavigateUri = null;
+                        // Optionally restore later; not needed unless reused.
+                    }
                 };
                 renderer.Push(myHyperlinkButton);
             }
@@ -42,7 +50,13 @@ protected override void Write(WinUIRenderer renderer, LinkInline link)
                 var hyperlink = new MyHyperlink(link, renderer.Config.BaseUrl);
                 hyperlink.ClickEvent += (sender, e) =>
                 {
-                    renderer.MarkdownTextBlock.RaiseLinkClickedEvent(sender.NavigateUri);
+                    var uri = sender.NavigateUri;
+                    var handled = renderer.MarkdownTextBlock.RaiseLinkClickedEvent(uri);
+                    if (handled)
+                    {
+                        // Suppress navigation by clearing NavigateUri
+                        sender.NavigateUri = null;
+                    }
                 };
 
                 renderer.Push(hyperlink);