在Avalonia UI裡使用Markdown渲染,可用於一般文章展示,例如AI回應的內容就是Markdown格式,我們可以使用Markdown.Avalonia或Markdown.AIRender,本文介紹使用後者,前者可以點擊連結瞭解用法。
安裝
使用 Markdown.AIRender 可以方便地在 Avalonia UI 中實現 Markdown 的渲染功能。透過 NuGet 套件管理員,可以輕鬆地將 Markdown.AIRender 引入到你的專案中。
Install-Package MarkdownAIRender
這個安裝指令會自動下載並安裝所需的相依項目,為你後續的開發工作打下基礎。
在樣式中引用樣式
在 Avalonia 的 Application 樣式中引入 Markdown.AIRender 的樣式檔案是確保其正常運作的重要步驟。以下是具體的程式碼範例:
<Application
...>
<Application.Styles>
<StyleInclude Source="avares://MarkdownAIRender/Index.axaml" />
</Application.Styles>
</Application>
這樣做可以將 Markdown.AIRender 的樣式整合到你的應用程式中,使其與應用的整體風格保持一致。它會將 Markdown.AIRender 的預設樣式套用到相關的元素上,為後續的 Markdown 渲染提供樣式支援。
範例
首先,我們需要準備 Markdown 內容。你可以從本機檔案讀取,也可以從網路取得,這裡提供了一個範例 Markdown 內容:
## 更新日誌
### V0.0.1.1(2024-12-28)
- 🔨使用MarkdownAIRender渲染Markdown
### V0.0.1.0(2024-12-25)
- 😄新增更新日誌
- 🔨匯出Excel預設覆蓋已有檔案
- 🐛修正只能匯出渲染表格資料的問題
這是一個典型的 Markdown 內容,包含了更新日誌資訊,其中使用了一些表情符號和常見的 Markdown 語法,如標題、清單和版本資訊。
接下來,在 axaml 中使用 MarkdownRender 元素將 Markdown 內容進行渲染:
xmlns:md="https://github.com/AIDotNet/Markdown.AIRender"
<md:MarkdownRender Value="{Binding Markdown}" />
這裡的 Value 屬性透過資料繫結將 Markdown 內容傳遞給 MarkdownRender 元素,它會根據所提供的 Markdown 內容進行渲染,並將其顯示在介面上。這種繫結方式可以讓你更靈活地更新 Markdown 內容,例如,當 Markdown 屬性發生變化時,渲染的內容也會隨之更新。
渲染效果
透過上述設定,你可以得到一個美觀的 Markdown 渲染效果,如下所示:

這個渲染效果展示了 Markdown.AIRender 的基本能力,將 Markdown 內容轉換為可視化的 UI 元素,為使用者提供了清晰、易讀的資訊展示。
更多
支援黑白主題
除了基本的渲染功能,Markdown.AIRender 還支援黑白主題,這為不同的使用者需求和設計風格提供了更多的選擇。

這個 GIF 展示了在黑白主題下的切換效果,讓你可以直觀地看到應用程式的介面如何根據不同的主題進行變化,滿足不同使用者對於視覺效果的偏好。
支援Markdown主題色
參考線上markdown編輯器編寫,目前不全,正在完善:

對於主題色的支援,可以讓你根據自己的應用程式的整體色調和風格,對 Markdown 的渲染效果進行進一步的定製。透過調整主題色,你可以使 Markdown 內容更好地融入整個應用程式的設計語言中,提供更加協調和個人化的使用者體驗。
國際化
在多語言應用開發中,國際化是一個重要的考量因素。Markdown.AIRender 正在完善對 Markdown 中程式語言【複製】按鈕等元素的國際化支援。這將使你的應用程式更具全球化的能力,無論使用者來自哪個國家或地區,都能更好地使用你的應用。
在實現國際化的過程中,我們不僅要考慮介面元素的翻譯,還需要考慮功能元素的國際化,例如複製按鈕的文字、提示資訊等。對於 Markdown.AIRender,雖然目前還在完善這方面的功能,但未來它將為你的 Markdown 內容的國際化提供更好的支援。這將有助於你在不同語言環境下提供一致的使用者體驗,擴大應用程式的使用者範圍。
倉庫位址
你可以在 https://github.com/AIDotNet/Markdown.AIRender 找到 Markdown.AIRender 的完整程式碼和更多資訊。在這裡,你可以查看最新的更新、提出問題或貢獻程式碼,共同推動該專案的發展。
此外,在開發過程中,你可能會遇到各種問題,以下是一些可能的解決思路和建議:
問題解決與常見問題
- 效能問題:如果在渲染較長的 Markdown 內容時遇到效能問題,你可以考慮對 Markdown 內容進行分段載入和渲染,或者最佳化
Markdown.AIRender的渲染演算法。可以嘗試使用非同步載入的方式,避免阻塞 UI 執行緒,確保使用者介面的流暢性。 - 樣式問題:如果你對渲染後的樣式不滿意,可以修改
Index.axaml檔案中的樣式,或者覆蓋對應的樣式規則,使其更符合你的需求。你可以透過 Avalonia 的樣式機制新增或修改樣式屬性,如字型大小、顏色、間距等。 - 相容性問題:確保你的 Avalonia 版本與
Markdown.AIRender相容。如果遇到相容性問題,可以查看Markdown.AIRender的 GitHub 倉庫中的 Issue 頁面,看看是否有其他開發者遇到了類似的問題,並嘗試使用最新版本的函式庫或更新 Avalonia 版本來解決問題。
總之,Markdown.AIRender 是一個非常有潛力的函式庫,為 Avalonia UI 中的 Markdown 渲染提供了豐富的功能和良好的擴充性。隨著開發的推進,我們可以期待它帶來更多強大的功能和更好的使用者體驗。
未來展望
在未來,我們希望看到 Markdown.AIRender 不斷完善和擴充其功能,例如:
- 提供更多的主題選擇和自訂主題的功能,讓使用者可以輕鬆創建出獨特的 Markdown 渲染效果。
- 進一步完善國際化支援,不僅包括按鈕等元素的國際化,還可以對整個 Markdown 內容中的程式碼區塊、引用等元素進行多語言處理。
- 提高效能,對於大規模的 Markdown 文件,能夠更快、更有效地進行渲染。
透過不斷的最佳化和改進,Markdown.AIRender 為開發者和使用者帶來更多的便利和更好的體驗。
希望本文能夠幫助你更好地使用 Markdown.AIRender 進行 Avalonia UI 的開發,如果你有任何問題或建議,歡迎在評論區留言或在 GitHub 上與我們交流。