私は、ユーザーがTextBoxにテキストを入力できるようにするWPFアプリケーションを作成しています。このテキストには、テキストをHTMLに変換するためのMarkdownDeepオブジェクトによって評価されるMarkdown構文が含まれている場合があります。私はこの出力を受け取り、NavigateToString
を呼び出してWebBrowserコントロールに送ります。つまり、WebBrowserコントロールは実際にインターネットにアクセスすることはありません。レンダリングされた出力を表示するための媒体にすぎません。一般に、このアプローチは非常にうまく動作し、結果に非常に満足しています。WPF WebブラウザーでPrettifyを実行して構文の強調表示を適用するにはどうすればよいですか?
ここで私はユーザーが実際のコードを入力できる新しい機能を追加しようとしています。また、HTML出力にはコードブロックの構文強調があります(StackOverflowと同じように)。 MarkdownDeepには、プログラマーが独自の構文ハイライトを挿入できるようにする、本当に素晴らしいフックがあります。彼らのウェブサイトからthis exampleを使いたかったのです。しかし、実際にPrettifyスクリプトを実行するのに問題があります。私はPrettify NuGet packageを追加して、私のソリューションにたくさんのスクリプトを追加しました。私はWPFアプリケーションでそれらを実行する方法を知らないし、オンラインで見つかったすべての例はASP.NETのものだった。
WebBrowserのInvokeScript
メソッドを使用してスクリプトを手動で実行しようとしましたが、フォルダ構造内に表示されているにもかかわらず、スクリプトが存在しないことを示すCOMExceptionが表示されます。 HTMLの文字列を考えると、どのように私は飾り立てるJavaScriptのスクリプトを適用することができます。
// 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");
}
は、私は私の質問は、このように要約することができると思いますか?
【それが役立つ場合、私はMVCE here例としてプロジェクトの完全なソースが含まれている]
https://stackoverflow.com/a/9815114/1271037 – dovid