iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
Software Development

就是要來點 A.I. 的 TopAOAIConnector App系列 第 2

EP 02 - 建立 Avalonia UI 專案 (MVVM 架構)

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會展開使用 Avalonia UI 技術所建立的 TopAOAIConnector App 。由於使用 Avalonia UI 可以很快速的進行各平台的 桌面 應用程式開發,並且透過此 TopAOAIConnector App 來串接 Azure OpenAI Service 時所需的功能研究。

本篇是 就是要來點 A.I. 的 TopAOAIConnector App 系列文的 EP02。


在前一回 EP 01 時大家已經安裝好 Avalonia UI 的延伸模組,並且能正常再次開啟 Visual Studio 的話:
09

那就開始來建立一個 Avalonia UI 的專案吧~~~

點選 "建立新的專案":
01

接著可以利用 Visual Studio 所設計的篩選功能,找到要使用的 Avalonia UI 專案範本後點選 "下一步":
02

接著就是正常的 Visual Studio 建立專案流程,輸入專案名稱跟確定專案要放在自己電腦的哪個位置後,點選 "下一步":
03

接著在這邊會遇到 Avalonia UI 專案範本的客製化選項:

  1. 架構
  2. MVVM Toolkit
  3. Avalonia Version
  4. Use Compiled Bindings
  5. Remove View Locator

點 1 跟點 3 應該沒什麼好解釋的,懂的人都懂

點 2 則是現煮時在開發 Client 端 UI 應用程式時,無論想要採用哪個 UI 技術 (WPF、UWP、Xamarin.Forms、.NET MAUI...等),皆會搭配使用 MVVM 框架進行開發,而 Avalonia UI 當然也不例外:
04
(上圖取自 Avalonia UI 官方文件)

相關詳細介紹可參考:
https://docs.avaloniaui.net/docs/concepts/the-mvvm-pattern/avalonia-ui-and-mvvm

所以在這邊就是要問想採用哪一套 MVVM 套件來協助開發。

以過去的 MVVM 套件被採用到 Avalonia UI 當中使用的大部分是選擇 ReactiveUI 套件作為 MVVM 框架的協助,但是自從 MVVM Toolkit 正式問世後,會比較推薦使用 MVVM Toolkit 來作為 MVVM 框架的套件選擇。

點 4,直白的講就是會有編譯器在編譯時期幫忙檢查 MVVM 的 Binding 是否有寫好,懂的人都懂

點 5,則是 Avalonia UI 自己設計的一套在協助處理 View 的小小程式庫 (or 稱之為工具)。

引述 Avalonia UI 官方文件介紹 View Locator 的第一段話:

While the use of the View Locator comes as part of the default templates, it's important to note that it's not a mandatory requirement. It's an optional tool provided to help you structure your Avalonia application using the Model-View-ViewModel (MVVM) design pattern.

05

直接看原文的最後一句 是可以協助幫忙處理使用 MVVM 框架時的一個可選工具;再看第一句的後半段,這工具 (View Locator) 在專案架構上 沒有 一定要使用。

所以最後在此步的選擇就是如下圖:
05

點選 "建立" 後,就會看到如下圖結果:
06

等等~~~這畫面看起來不太妙阿!

才剛建立專案就正中間出現紅色驚嘆號!錯過了或做錯了什麼嗎?難道第一次就砸鍋了?

別緊張,靜待下回細細分解囉~~~


上一篇
EP 01 - Avalonia UI 快速使用 (Visual Studio)
下一篇
EP 03 - 展示 Avalonia UI 在不同桌面平台的效果
系列文
就是要來點 A.I. 的 TopAOAIConnector App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言