簡體   English   中英

如何在WPF WebBrowser中運行Prettify來應用語法突出顯示?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM