
Avalonia 示例項目上手指南clone 下來先看哪個 demo【免費下載鏈接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI項目地址: https://gitcode.com/GitHub_Trending/ava/AvaloniaAvalonia 是一個用 C# 和 XAML 編寫桌面、嵌入式、移動和 WebAssembly 應用的 .NET 跨平臺 UI 框架。它的倉庫自帶一組可直接運行的官方示例項目集中放在 samples/ 目錄下。讀完這篇你能清楚每個 demo 各自演示什么、該按什么順序跑起來以及卡住時去哪個目錄找答案。clone 下來第一個小時把 Sandbox 跑通別急著打開大工程先跑最小的那個samples/Sandbox/。它只有啟動入口和一個主窗口Program.cs里就是標準的 Avalonia 應用啟動流程DEBUG 下還會開啟開發(fā)者工具。如果你能在這個工程里打開窗口、拖動一下說明工具鏈沒問題后面遇到的報錯才值得繼續(xù)排查。從哪個 demo 開始學下面這張表按演示內(nèi)容把示例工程歸了個類路徑都是倉庫里的真實位置路徑演示內(nèi)容samples/ControlCatalog/按鈕、輸入、菜單到拖拽、手勢的控件演示集samples/BindingDemo/數(shù)據(jù)綁定的各種形態(tài)模式、集合、驗證、命令samples/MiniMvvm/一個僅幾十行的 INotifyPropertyChanged 最小實現(xiàn)samples/VirtualizationDemo/列表虛擬化聊天流、展開列表、實驗區(qū)samples/RenderDemo/動畫、命中測試、RenderTargetBitmap、文字排版samples/GpuInterop/Direct3D 與 Vulkan 互操作samples/SafeAreaDemo/移動端劉海屏與安全區(qū)域適配想熟悉控件翻 ControlCatalog 的 Pages 目錄ControlCatalog 是覆蓋面最廣的演示集左側(cè)導航對應 samples/ControlCatalog/Pages/ 下的一個個頁面Button、TextBox、Calendar、DragAndDrop、Gesture……每頁就是一個獨立場景。建議按自己業(yè)務里用得到的控件去翻對應頁面而不是從頭讀到尾。它同時配有桌面、Android、iOS、瀏覽器等多個宿主工程如 samples/ControlCatalog.Desktop/、samples/ControlCatalog.Android/同一個 UI 代碼在不同平臺上分別跑正好能看出各平臺的差異。想搞懂綁定從 BindingDemo 的 Basic 頁簽讀起B(yǎng)indingDemo 的窗口用標簽頁組織內(nèi)容Basic 頁簽里并排放著兩種方式的對比——雙向綁定、OneWay、OneTime以及集合元素的綁定后面的頁簽分別演示驗證和命令。想理解綁定到底綁了什么這里比任何文檔都直觀因為每個輸入框旁邊都標了它的模式。綁定離不開視圖模型層而 samples/MiniMvvm/ 把這一層做到了最小ViewModelBase里的RaiseAndSetIfChanged就是整個框架所有 demo 依賴的屬性通知基礎。ControlCatalog 也引用了它所以看懂這幾十行代碼后面所有示例的 ViewModel 都不再陌生。動手時還有兩個輕量的地方值得看samples/Generators.Sandbox/ 演示源碼生成器的用法samples/TextTestApp/ 則專門折騰文本排版對要精確控制文字渲染的人有用。列表滾動卡打開 VirtualizationDemo 找對照當你的列表滾動掉幀或者數(shù)據(jù)量大到必須虛擬化時VirtualizationDemo 給你三個真實場景聊天頁模擬消息不斷追加后的回底滾動展開列表測試大量可折疊項Playground 頁則提供一組開關讓你切換多選、Toggle 等選擇行為見 Views/PlaygroundPageView.axaml。核心思路都一樣——只實例化可見區(qū)域的控件滾動時復用。要接第三方圖形庫看 GpuInteropGpuInterop 解決的是另一類問題把 Direct3D 或 Vulkan 畫布嵌進 Avalonia 窗口讓第三方圖形庫直接在窗口上畫。D3DDemo/ 對應 Windows 的 D3D11VulkanDemo/ 是跨平臺的 Vulkan 路徑程序啟動時用DemoType枚舉切換。如果你的目標是游戲引擎或自研渲染器接入重點看這兩個子目錄以及 src/Avalonia.OpenGL/ 里的 ExternalObjectsFeature 接口——它是拿到底層交換鏈與紋理句柄的約定。自繪控件前先逛一圈 RenderDemoRenderDemo 演示的是渲染管線本身動畫與彈簧動畫、幾何命中測試、RenderTargetBitmap、可寫位圖、文字排版Pages 目錄下的各頁面。打算寫自繪控件或自定義繪制時這些頁面就是現(xiàn)成的參考實現(xiàn)。移動端劉海屏SafeAreaDemo 一眼看懂SafeAreaDemo 展示主視圖如何避開劉海和手勢條samples/SafeAreaDemo.Android/ 與 samples/SafeAreaDemo.iOS/ 兩個獨立工程讓同一套邏輯在兩臺真機上對照驗證適合做移動端的同學花十分鐘看完。卡住時的兩個去處docs/index.md 記錄了構建流程與貢獻指南遇到怎么編譯整個倉庫這類問題先看它tests/ 目錄下的單元測試比如 Avalonia.Base.UnitTests則是理解框架行為的活字典——很多為什么控件是這樣表現(xiàn)的問題都能在那里找到對應的斷言。建議的學習順序Sandbox 跑通環(huán)境ControlCatalog 翻控件BindingDemo 配合 MiniMvvm 吃透綁定之后再按需求轉(zhuǎn)向 VirtualizationDemo、GpuInterop 或 RenderDemo不必每個都精讀。【免費下載鏈接】AvaloniaDevelop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The future of .NET UI項目地址: https://gitcode.com/GitHub_Trending/ava/Avalonia創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考