【发布时间】:2017-06-27 22:09:38
【问题描述】:
我正在创建一个允许用户在 TextBox 中输入文本的 WPF 应用程序。此文本可能包含 Markdown 语法,由 MarkdownDeep 对象评估以将文本转换为 HTML。我通过调用NavigateToString 将这个输出提供给WebBrowser 控件。 (换句话说,WebBrowser 控件从不真正访问互联网——它只是一种让渲染输出显示的媒介。)一般来说,这种方法非常有效,我对结果非常满意。
现在我正在尝试添加一个新功能,用户可以在其中输入实际代码,并且 HTML 输出将具有代码块的语法突出显示(类似于 StackOverflow 的做法)。 MarkdownDeep 有一个非常漂亮的钩子,允许程序员注入他们自己的语法高亮。我想使用他们网站上的this example。但是,我实际上无法运行 Prettify 脚本。我添加了Prettify NuGet package,它为我的解决方案添加了一堆脚本。我不知道如何在 WPF 应用程序中运行它们,而且我在网上找到的所有示例都是针对 ASP.NET 的。
我尝试使用 WebBrowser 的 InvokeScript 方法手动运行脚本,但我只得到 COMExceptions(这表示脚本“不存在”,即使我可以在文件夹结构中看到它)。
// In XAML file
<WebBrowser x:Name="HtmlOutput"
local:WebBrowserBehavior.Html="{Binding RenderedText}"
LoadCompleted="OnLoadCompleted"/>
// In .cs code-behind
private void OnLoadCompleted(object sender, NavigationEventArgs e)
{
HtmlOutput.InvokeScript("./Scripts/Prettify/run_prettify.js");
}
我想我的问题可以概括为:给定一个 HTML 字符串,我如何应用 Prettify JavaScript 脚本?
[如果有帮助,我已将示例项目的完整源代码包含为 MVCE here]
【问题讨论】:
标签: c# wpf markdown prettify markdowndeep