[爆卦]WPF XAML是什麼?優點缺點精華區懶人包

為什麼這篇WPF XAML鄉民發文收入到精華區:因為在WPF XAML這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者e23882 (呆呆要不要買降有)看板C_Sharp標題Re: [問題] 有沒有著重在GUI方面...


自己也是寫WPF的,寫好久了也走了很多彎路,來分享一下技能樹怎麼發展


# 教材

書的話我蠻推薦這本的 "WPF 編程寶典 - 使用 C# 2012 和 .NET 4.5 (第4版)"
https://www.tenlong.com.tw/products/9787302327738?list_name=c-wpf

寫的比較深比較深,但是範例多,概念也完整

還有一本日本人寫的 "WPF 與 XAML 應用程式開發講座"

這本比較簡單,我一開始學DataBindind的時候覺得很抽象,一直搞不懂

有一天翻一翻突然就了解了

如果剛開始學寫UI建議就直接從WPF開始了

WPF一直在用的Xaml、Databinding、MVVM

在之後微軟.net6的MAUI也用的到可以無痛接軌

現在一些網頁的前端框架、APP也都有用到DataBinding跟MVVM的設計

學了之後寫其他的前端框架也不會從0開始,CP值很高

而且WPF有很多漂亮的UI庫,分享一下我自己常用的幾個

MahApps
https://mahapps.com/

MaterialDesignInXamlToolkit
https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit

Live Chart
https://lvcharts.net/


==========================================================

# 環境

下載.net core3.1的SDK
visual studio 2019 community


課金玩家我建議可以買個Rider,人家還在一行一行慢慢打的時候

你alt + enter enter物件建構子生出來了(這個visual studio好像也有)

移到類別上 Ctrl+I Alt+P 物件介面寫好了
找不到快捷鍵Shift按兩下直接用搜尋的
live template, qq tab常常在寫code出現了

人家用走的去打怪你跳著打,超級chill

練熟的話寫扣的過程中手都可以不用離開鍵盤

再配一把青軸鍵盤,啪啪啪啪啪啪啪,鄰居聽到了都會覺得自卑

這是我之前練習手不離開鍵盤錄的影片
https://www.youtube.com/watch?v=Pd8vVcB1l6w

Rider - 尊爵不凡的您值得擁有
https://imgur.com/a/bt8p62W



# 學習
一開始就照著書上走

知道什麼是Xaml.布局元件.元件.屬性.事件.委派事件.依賴屬性

之後了解一下ViewModel、DataBinding、Command、Interaction、MVVM架構

****寫的時候忘記寫到了,補充一下****
xaml的話一定要再學一下DataTemplate、ControlTemplate、Converter

C# 的話還有一個WPF專用的ObservableCollection<T> 一些常用的介面知道在幹嘛
INotifyPropertyChanged、IValueConverter、ICommand

還有NLog
***********************************

在這個階段會深入了解C#,什麼變數方法類別介面迴圈都要在這個時候學好學扎實

這時候你可以會需要一本專門在講C#的書,但因為我從來沒看過這種書

所以可能要請其他人推薦你一下


到這裡其實已經可以用WPF滿足你大部分的需求了

你會覺得自己hen棒開始想要做自己的東西,可能會開始學資料庫存一些要用的資料

你可以再繼續深入了解WPF 學一些Storyboard、Trigger、Resource、Style、
刻自己的元件....

這些書上都有教,但是工作比較少用到這一塊,尤其是如果你用別人寫好的樣式庫的話

基本上那些庫可以滿足你大部分UI滑來滑去的需求

或是開始學資料庫相關的知識

這邊我要推薦幾個我覺得用起來很爽,效果也很帥的UI庫

Avalondock - WPF ToolKit
https://imgur.com/a/0qzInOS
可以讓UI的某個部分拉出來離開主視窗,還可以再拼回去不同的位置,很爽

CefSharp
https://reurl.cc/Kjbv9m
可以在WPF裡面嵌入網頁,我沒記錯這個是chromium的內核,跟chrome好像是同一個

MahApps - Flyout
https://imgur.com/a/6I9e3QU
UI會飛出乃...


Notifycation
https://imgur.com/a/zI87rWs
可以在螢幕上彈出來OO

Diffviewer
其實就是上面Avalondock的圖片裡面的東西,他可以比對文字的差異
很方便



不過我強烈建議在學資料庫之前可以先學個測試框架 MSTest、NUnit、XUNit

不然之後開始有資料進來UI常常會出現一些你沒辦法預期的行為

會花很多時間在debug,人生苦短單元測試可以幫你節省很多debug時間


資料庫的話應該會學幾個常用的 SQL Server、MySQL、SQLite

這邊強烈建議就直接連ORM框架也學了 EF、Dapper

學會之後可以再學個.net core的Webapi

.net core的注入依賴會讓你在程式的設計上有更多的想法


學了webapi總不會希望服務永遠都架在自己開發的電腦上

你可以學一下怎麼架server,怎麼用裝win server、linux

課金的同學可以直接用azure、GCP、或是跟其他主機商租主機

如果你的服務真的寫得好,你可能會面臨常常要發布到新的環境上給別人用

每次都會浪費你很多時間,你可以學一下怎麼用docker打包跟部屬你的環境

不過因為我很懶惰一直都沒有去學這個,所以不能給你什麼建議

再來還有一些什麼負載平衡、緩存、CICD就要等你學會之後上來教大家了

最後用我從大陸人那邊學來的一句話做這個學習的總結

手在鍵盤 心中有圖 一把梭


※ 引述《nietz (菜嘎舞春)》之銘言:
: 大家好
: 我是新手,且算是業餘兼自學的,因為工作上是少部分,並非常常在寫程式
: 一般市面上的書(英文、中文)似乎都是在語法上著墨較多,對GUI方面仔細說明的
: 書比較少...
: 小弟好奇是不是有比較針對GUI這方面的書籍? 我用Winform、但不排除其他...
: 或者應該這樣問,各位前輩是否不大需要書,並如何在GUI這方面學習成長的?
: 謝謝~

--
◢████◢███ ╭═╮
◢████◤◢███◤ ║˙║
█████ ████ < ˙║
█ ▉█ ████ ║˙║
◢▇▇████ ╰═╯
████████

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.101.50 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1599567686.A.4B2.html
fattcs: 講得很詳細 推一個 09/08 21:03
s4300026: 推的我都想買了 09/08 23:02
Isaea: 感謝分享 09/09 08:29
kobe8112: 推好文~ 09/09 08:49
Litfal: 這些還沒學完就可以轉職了XD 09/09 22:34
正常需求都是 N年WPF開發經驗 熟MVVM設計 熟EF GIT SQL WEBAPI.WCF
testPtt: 有沒有直接支援svg的open source lib? 09/09 23:02
沒有這方面的經驗耶,可能要google一下
coder5566: 好文推 09/10 12:36
dayoro898: 推一個,這個技能樹方向很棒 09/10 17:36
APTON: IDE不想離開vs的話,用resharper也不錯喔。Jetbrain公司的 09/11 06:43
APTON: 東西真的可以節省很多時間 09/11 06:43
APTON: 感謝推薦wpf的書!我也是類似的學習路徑,只是工作需要, 09/11 06:55
APTON: 先去學web api和ef。一直不知道怎麼補上wpf這塊,終於找到 09/11 06:55
APTON: 一個入口了! 09/11 06:55
我記得他們在工程師節的都會有一些殺到流血的折扣
※ 編輯: e23882 (211.75.101.50 臺灣), 09/11/2020 09:49:55
sno2: 厲害!感謝分享 09/13 18:23

你可能也想看看

搜尋相關網站