這個系列的目標,是帶領初學者或有基礎的開發者,用30天的時間,從C#基本語法開始,一步步學會WPF的桌面應用程式開發,並最終完成一個能夠下載股票資料、儲存到本地資料庫、套用篩選策略的選股工具。
我是誰?
大家好,我是Akito,目前在美商Zealogics公司擔任Senior Developer,專注於C#/.NET技術,同時也有多年 Windows 桌面應用 (WPF/WinForm) 以及 網站開發的經驗。過去我曾參與金融、製造與醫療領域的專案,特別是在WPF介面設計、系統整合與單元測試方面有實務經驗。
我選擇以「製作WPF選股工具」為主題,主要是因為這能把程式語言學習和實際應用結合起來。希望透過這系列文章,能幫助初學者一步步掌握C#與WPF也讓有經驗的工程師能快速建立一個能落地使用的小工具。
為什麼是C#?
C#不一定是唯一能做到這件事的語言,但C#是微軟主力推廣的語言,結合Visual Studio/Rider開發環境,對初學者相對友好。不僅能做桌面應用,也能做WebAPI、資料處理甚至跨平台開發,對想要快速實作選股工具的人來說,是非常合適的選擇。
WPF? WTF?
WPF(Windows Presentation Foundation)是微軟推出的桌面應用程式UI開發框架,隸屬於 .NET平台的一部分。它的核心特色是使用XAML(Extensible Application Markup Language)來描述畫面,並且能與 C# 程式邏輯緊密結合。
WPF 的特點
為什麼不用 WinForms?
很多人在學 C# 時,除了 Console App,第一個接觸的桌面應用大多是 WinForms。的確,WinForms 上手很快,拖拉控制項就能跑出一個畫面,對初學者很有成就感。
不過,WinForms 有一個常見的問題:
👉 畫面邏輯(UI Code) 和 商業邏輯(業務 Code) 很容易寫在同一個 Form 裡面。
這會導致:
舉個例子,假設你要做一個「選股按鈕」:
在 WinForms 裡,很可能直接在 Button_Click 裡把 API 呼叫、資料篩選、UI 更新都寫在一起。
在 WPF(配合 MVVM)裡,這些責任會被分開:UI 負責顯示,ViewModel 負責邏輯,Model 負責資料。
結果就是:
WinForms:寫起來快 → 後期痛苦
WPF:一開始學習門檻稍高 → 長期更好維護、擴充性更好
WinForms 範例:
下面這段程式碼是不是很熟悉?
private void btnSelectStock_Click(object sender, EventArgs e)
{
// 呼叫 API 抓資料
var data = StockApi.GetStocks();
// 篩選股票邏輯
var filtered = data.Where(x => x.Price > 100).ToList();
// 更新畫面
listBox1.DataSource = filtered;
}
看起來很簡單,但問題是:
WPF + MVVM 範例:
換到 WPF,你會把責任分清楚:
ViewModel(邏輯):
public class StockViewModel : INotifyPropertyChanged
{
public ObservableCollection<Stock> Stocks { get; set; } = new();
public ICommand SelectStockCommand { get; }
public StockViewModel()
{
SelectStockCommand = new RelayCommand(SelectStock);
}
private void SelectStock()
{
var data = StockApi.GetStocks();
var filtered = data.Where(x => x.Price > 100).ToList();
Stocks.Clear();
foreach (var s in filtered) Stocks.Add(s);
}
}
View(畫面,XAML):
<Button Content="選股" Command="{Binding SelectStockCommand}" />
<ListBox ItemsSource="{Binding Stocks}" />
這樣的好處是:
總結:
在這篇文章裡,我們先聊了為什麼要選擇C#與WPF來作為這系列的基礎,並且簡單比較了WinForms與WPF的差異。或許你已經感受到,WPF雖然一開始學習門檻略高,但在長期維護與擴充性上會是更理想的選擇。
接下來的文章,我們會從C#語言基礎開始,循序漸進地帶你認識物件導向、集合、LINQ 等核心觀念,並逐步邁向 WPF 的世界。最終,我們將把這些知識串接起來,完成一個可以下載股票資料、儲存至本地資料庫、並套用篩選策略的 選股工具。
希望這個系列能成為你學習的地圖,也能讓你在30天之後,不只是學會語法,而是能親手打造出一個真正有價值的應用程式。