![](/img/trans.png)
[英]How can I get an HtmlElementCollection from a WPF WebBrowser
[英]How can I run Prettify in a WPF WebBrowser to apply syntax highlighting?
我正在創建一個WPF應用程序,該應用程序允許用戶在TextBox中輸入文本。 此文本可能包含Markdown語法,由MarkdownDeep對象評估該語法以將文本轉換為HTML。 我獲取此輸出,並通過調用NavigateToString
將其提供給WebBrowser控件。 (換句話說,WebBrowser控件實際上從未訪問過Internet-它只是一種使渲染的輸出得以顯示的媒介。)通常,這種方法的效果非常好,我對結果非常滿意。
現在,我正在嘗試添加一個新功能,用戶可以在其中輸入實際代碼,並且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包含在此處 ]
使用例如,將腳本作為絕對路徑傳遞
System.AppDomain.CurrentDomain.BaseDirectory
並且不要忘記將文件復制到輸出目錄。 Visual Studio可以自動為您執行此操作(將文件標記為“內容”,然后在“屬性”選項卡中選擇“復制”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.