diff --git a/Plain Craft Launcher 2/Controls/MyMsg/MyMsgMarkdown.xaml.cs b/Plain Craft Launcher 2/Controls/MyMsg/MyMsgMarkdown.xaml.cs index d4d9df080..dbae31077 100644 --- a/Plain Craft Launcher 2/Controls/MyMsg/MyMsgMarkdown.xaml.cs +++ b/Plain Craft Launcher 2/Controls/MyMsg/MyMsgMarkdown.xaml.cs @@ -17,6 +17,7 @@ public MyMsgMarkdown(ModMain.MyMsgBoxConverter converter) try { InitializeComponent(); + CommandBindings.Add(new CommandBinding(Markdig.Wpf.Commands.Hyperlink, _OpenHyperlink)); AppendUniqueNameSuffix(Btn1); AppendUniqueNameSuffix(Btn2); AppendUniqueNameSuffix(Btn3); @@ -47,6 +48,20 @@ private void AppendUniqueNameSuffix(FrameworkElement element) element.Name += ModBase.GetUuid(); } + private static void _OpenHyperlink(object sender, ExecutedRoutedEventArgs e) + { + var url = e.Parameter?.ToString(); + if (string.IsNullOrWhiteSpace(url)) + return; + if (!Uri.TryCreate(url, UriKind.Absolute, out var uri) + || (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps)) + { + ModBase.Log("[Control] 已忽略非 http(s) 的 Markdown 链接:" + url, ModBase.LogLevel.Developer); + return; + } + ModBase.OpenWebsite(url); + } + private void ConfigurePrimaryButton(string text, bool isWarn) { Btn1.Text = text;