diff --git a/DerpingDrivers/MainWindow.xaml b/DerpingDrivers/MainWindow.xaml index e4aff22..64c3b26 100644 --- a/DerpingDrivers/MainWindow.xaml +++ b/DerpingDrivers/MainWindow.xaml @@ -60,10 +60,7 @@ - + \ No newline at end of file diff --git a/DerpingDrivers/MainWindow.xaml.cs b/DerpingDrivers/MainWindow.xaml.cs index 6977f8a..6fc4a29 100644 --- a/DerpingDrivers/MainWindow.xaml.cs +++ b/DerpingDrivers/MainWindow.xaml.cs @@ -1,5 +1,12 @@ -using DerpingDrivers.Util; +using System.IO; +using System.Reflection; +using System.Text; +using System.Windows.Documents; +using System.Xaml; +using DerpingDrivers.Util; using MahApps.Metro.Controls; +using Markdig; +using Markdig.Wpf; namespace DerpingDrivers { @@ -49,5 +56,49 @@ namespace DerpingDrivers public string SummaryText => "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."; + + public FlowDocument SummaryDocument + { + get + { + var markdown = "*None available*"; + + // Convert Markdown to XAML + var xaml = Markdig.Wpf.Markdown.ToXaml(markdown, BuildPipeline()); + + // Render XAML for FlowDocument Control + using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xaml))) + { + var reader = new XamlXmlReader(stream, new MyXamlSchemaContext()); + + if (System.Windows.Markup.XamlReader.Load(reader) is FlowDocument document) + { + return document; + } + } + + return null; + } + } + + private static MarkdownPipeline BuildPipeline() + { + return new MarkdownPipelineBuilder() + .UseSupportedExtensions() + .Build(); + } + } + + internal class MyXamlSchemaContext : XamlSchemaContext + { + public override bool TryGetCompatibleXamlNamespace(string xamlNamespace, out string compatibleNamespace) + { + if (xamlNamespace.Equals("clr-namespace:Markdig.Wpf")) + { + compatibleNamespace = $"clr-namespace:Markdig.Wpf;assembly={Assembly.GetAssembly(typeof(Markdig.Wpf.Styles)).FullName}"; + return true; + } + return base.TryGetCompatibleXamlNamespace(xamlNamespace, out compatibleNamespace); + } } } \ No newline at end of file