為什麼這篇c# mvvm範例鄉民發文收入到精華區:因為在c# mvvm範例這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者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
※ 編輯: e23882 (211.75.101.50 臺灣), 09/11/2020 09:49:55