0

此刻我正在嘗試進入Windows應用商店應用開發,並且我在某個時間點被卡住了。 我想實現一種類似於「stackdownflow」的「降格語言」,以突出顯示文本輸入的某些部分。 除此之外,我想讓用戶能夠在他的文本上使用不同的字體顏色。 RichEditBox似乎是這個任務的理想控件,但我不知道如何檢測即時輸入的標記。 例如,當用戶輸入**Test**時,文本應立即轉換爲測試Windows-Store-App RichEditBox降價突出顯示

我試圖通過聽「TextChanged」事件來看待用戶是否輸入**。如果是這種情況,並且如果他之前已經有一次輸入**的序列,那麼我將從第一個註釋序列(開始標記)的結尾到第二個(關閉標記)的開頭設置文本範圍的字符格式)註釋爲粗體。

但這種解決方案似乎非常快速和骯髒。

我的第二個想法是使用WebView控件在用「Markdown Sharp」預處理文本後呈現文本。 但是,用戶將無法編輯文本。

所以我需要得到一些建議或提示解決這個問題。我也研究過編寫一個定製的RichEditBox控件,但是我沒有自定義控件開發的經驗,而且現在網上沒有很多資源用於Windows 8開發。

在此先感謝。

回答

0

正如我所看到的,您的問題是您要編輯基於Markdown語法的「源」並在同一位置顯示格式化結果。只要星號不見了,你會如何回覆測試到正常狀態?如果答案是「使用按鈕」,那麼爲什麼不使用按鈕使它在第一位加粗呢?

但是,你可以做一個混合的事情:在源文本中應用格式,同時保持Markdown標記(不知道這是否完全適用於所有Markdown技巧)。也就是說,**Test**將會看起來像**Test**。對於最終的格式化結果,您可以使用單獨的視圖,例如RichTextBlock。

爲了完成混合格式化,一個選項是讓後臺線程定期將整個文本與特定於Markdown語法的正則表達式進行匹配。對於每個匹配,相應的文本範圍將被相應地格式化。

+0

難道你不能看光標位置,並且如果它落在粗體字**測試**的範圍內,你可以用\ * \ * Test替換它* * \ * – roryok