close

心得,錯了別K我,畢竟C#這門程式語言,完全自修來的呀XD~~~~


最近開始玩WPF,真的還滿有趣的,其實最早以前一開始學C#的時候,就想要用WPF來寫視窗程式,但是相對於WinForm來說,難度有點高,以至於學習緩慢,而選擇了WinForm,直到最近遇到了一個瓶頸,控建太多的時候,開啟的時候速度有點LAG?這個雖然只是個小小的缺點,但是在心中總有一根刺呀....然後開始回來研究WPF,想把WPF寫的跟原本WinForm功能差不多,真的讓我弄了半個月有了。。。

寫點差別吧

原本在WinForm的時候很簡單,雖說點兩下就可以綁定事件了,但是這裡我會用Foreach去找按,然後綁事件

大概像這樣子:連結網誌,雖然笨了點,但是我覺得還滿直覺的XD.....

然後UI只要把按鈕的Name打好,就會自己綁好了。對於多單據來說,其實後面開發就很SOP了。畢竟以單據的概念來說,就是CRUD麻。

但是WPF的時候,這招就行不通了。雖然也可以在.cs裡面這樣寫,但是這樣不就又跟WinForm一樣了嗎,WPF最佳開發方式,其實是MVVM模式,如非必要,盡量不要寫這個位置,所以我最後的做法,是直接寫在Xaml上面,大概像這樣

<Button Content="新增"  Command="{Binding BtnCmd}" CommandParameter="Add"/>

把所有的按鈕命令綁在同一個Command上,然後只要給上參數就可以了。最後複製貼上複製貼上的...

以上是在最常用的按鈕上,我是這麼做的,對了,因為開發的關係,所以我大部分的程式並沒有很多華麗的功能,大概就是單據以及報表開發比較多。

再來有一個很大的差別,就是UI的更新

在WinForm的時候,如果使用了async/await時候,想要更新UI,就要配合invoke,才可以更新UI,但是當你控鍵多的時候,就....呵呵...所以我在WinForm的時候,是不同步更新UI的,就放一個ProgressBar讓使用者覺得,嗯!你的程式還在跑,沒事的,我去看看FB或做其他的事之類的,等把資料弄好,在一次更新UI。

在WPF的時候,當你更新資料時,UI就會自己更新了,畢竟Wpf是綁定的概念,雖然說WinForm也可以用DataBinding來綁定控鍵(這也是我目前WinForm的方式)

但是還是麻煩,怎麼說呢...新增的時候,就要重新綁一次,或是一個屬性一個屬性的去初始化,或許是我不得其法吧,但是我Google過拉,Not Found!!!

基本上目前Wpf已經學習到一個可用的階段了,至少個人是這麼認為拉,畢竟已經過了那道崁...再來就可以玩UI了吧(這可是Wpf優勢的地方之一呢!)

 

arrow
arrow
    文章標籤
    C# WPF WinForm 差異
    全站熱搜

    軒軒的爸媽 發表在 痞客邦 留言(0) 人氣()