Windows Phone程式設計回顧

jpss發表於2014-08-23

前言

已有一年多沒有碰WP相關的開發了. 近期經常看部落格園的文章, 發現開發WP應用的同學很多, 其中博問頻道關於"WPF", "C#", "WP8"相關的問題比較多, 其中很多問題我之前也遇到過, 所以這裡寫一篇回顧文件, 希望我的經驗能給大家帶來一些幫助.

我最早的WP手機是Mozart, 這部水貨機給我帶來了無盡的樂趣, 還有苦惱. Metro的介面設計和互動方式, 非常符合我對現代應用體驗的期待, 但應用商店中app的質量數量之少, 質量之差, 讓人感覺WP的前景不妙. 我的WP開發學習就是從這時開始, 先後根據自己的需求, 搗鼓出好幾款軟體並提交到了應用商店. 儘管已經一年多未更新, 大多數應用仍有很多忠實使用者, 並收到眾多網友給我的中肯建議, 還有應用更新的請求.

寫這篇文件, 一方面是回顧下之前的開發經驗, 還有就是及時充電, 跟進WP SDK的進度, 為自己/網友繼續帶來一些新鮮氣息.

一些作品

手指畫畫

"手指畫畫"是我開發的第一款應用, 前後更新了好幾版, 最新版本是5.0, 最後更新時間是2013年7月. 這個也是我自己最滿意的作品, 但後來業餘時間太少, 中間還有一個6.0版本, 壓了一年, 直到現在也沒有提交發布. 網友熱情讓我感動, 作為一款免費軟體, 我加上了捐贈連結, 竟然收到了接近100元人民幣! 很讓人意外, 加這個連結時, 我曾自嘲到, 這個按鈕如果有人點真是見鬼了.

下載地址: http://www.windowsphone.com/zh-cn/store/app/%E6%89%8B%E6%8C%87%E7%94%BB%E7%94%BB/7e0f3d2f-890a-4818-bbbd-6ee57689325e

蜂鳥瀏覽器

這個也我花費好幾個週末時間. WP7時代的預設瀏覽器, 儘管操作體驗優秀, 但功能少的可憐, 用起來也不夠順手. 我就有想法搞一個瀏覽器, 也就有了這個作品.

下載地址: http://www.windowsphone.com/zh-cn/store/app/%E8%9C%82%E9%B8%9F%E6%B5%8F%E8%A7%88%E5%99%A8/1ca4292a-36a1-4e1b-98ff-d1899003fee0

其他

另外, 我練手的軟體都提到了市場, 有興趣可以查閱此連結: http://www.windowsphone.com/zh-CN/store/publishers?publisherId=%25e5%2586%25af%25e5%25a8%2581%25e9%25a3%258e&

經驗

下面回到正題. WP開發, 入門門檻其實很低. 主要是C#語言學習, .net framework熟悉, 下載WP SDK和Visual Studio Express, APP設計和開發.

 C#語言快速入門

C#語言本身語法優雅, 按照MSDN教程, 幾小時入門應該沒什麼問題. 作為WP的開發語言, 豐富的語言特性也令人興奮. 所以

經驗一

瞭解.net framework內容

閱讀.NET Framework 的路線圖 瞭解.net framework中包含那些內容, 只需要大概瀏覽一遍,知道那些功能是這個框架提供的, 以便用時過來詳細參考. WP的SDK中提供了這篇文章的一個子集.

閱讀開發 Windows Phone 8 的應用 熟悉WP應用的生命週期和常見功能實現, 同時下載SDK.

APP設計

不建議僅抱著學習的態度進行WP開發, 一定要給自己設定一個APP目標, 介面/功能/互動, 最好打個草稿, 在紙上畫出介面和互動流程圖, 然後對照Microsoft 設計原則 看下介面是否符合WP系統的風格, 然後針對性優化.

介面/互動/功能整體需求完成後, 就可以根據上面的連結內開始開發了.

介面佈局

WP的介面通過XAML定義, XAML和HTML其實很類似, 但語法其實更簡單, 瞭解Grid, StackPanel, TextBox, TextBlock, Button這幾個標籤後, 基本介面就可以完成了. 編寫介面幾點建議.

經驗二

  1. 多用自適應佈局, 高度/寬度自適應, 方便做多解析度設配;
  2. 多用資源, 比如字型\顏色\背景等, 不要寫具體的值, 而是用資源代替, 參考Windows Phone 主題資源 這樣你的介面可以自動適應各個主題;
  3. 將樣式整理為資原始檔匯入, 類似開發網頁的css檔案, 一次定義, 多次複用, 切勿拷貝;
  4. 所有文字通過文字資源使用, 方便實現本地化;
  5. 所有介面資料顯示使用繫結, 不要在程式碼中直接給元素設定顯示內容. 比如顯示一個文字, 不要用TextBlock1.Text="xxx";, 而是在xaml中使用<TextBlock Text="{Binding Xxx}"></TextBlock>, 關於繫結, 參考資料繫結概述 (XAML);

設計模式

採用"MVVM"方式開發, 理由自己開發中可以體會到, 只要app複雜度稍微提升, "View Model"和"Model"劃分很難避免. 所以一開始選擇"MVVM"方式開發可以節省不少重構工作.

"MVVM"儘管有很多框架, 但開始並不建議使用, 自己瞭解並應用就行了.

經驗三

  • Model儘量實現"INotifyPropertyChanged"介面, 如方便儘量讓類可以序列化, 以便持久儲存;
  • View Model中定義集合或列表資料, 都使用ObservableCollection類, 如有必要可以繼承自此類. 繫結顯示時, 修改資料就可以自動更新介面;
  • 只要是列表類的資料顯示, 都使用ListBox, 通過定義模板和模板選擇, 實現介面自定義.

繫結, 繫結!

最後重點強調, 多用資料繫結.

結束

時間不多, 今天先到這裡.

相關文章