我正在创建一个允许用户在 TextBox 中输入文本的 WPF 应用程序。此文本可能包含 Markdown 语法,该语法由MarkdownDeep对象评估以将文本转换为 HTML。我获取此输出并通过调用将其提供给 WebBrowser 控件NavigateToString
。(换句话说,WebBrowser 控件从不真正访问互联网——它只是一种让渲染输出显示的媒介。)一般来说,这种方法非常有效,我对结果非常满意。
现在我正在尝试添加一个新功能,用户可以在其中输入实际代码,并且 HTML 输出将具有代码块的语法突出显示(类似于 StackOverflow 的做法)。MarkdownDeep 有一个非常漂亮的钩子,允许程序员注入他们自己的语法高亮。我想使用他们网站上的这个例子。但是,我实际上无法运行 Prettify 脚本。我添加了Prettify NuGet 包,它为我的解决方案添加了一堆脚本。我不知道如何在 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 包含在内]