又是好久沒有寫BLOG了,做完上一個MSN項目後都是些瑣碎的事情,然後就是是玩攝影啊,旅遊啊。上月休假去了趟西藏,真是不錯。回來了也要收心學習了。Windows Phone 7.1的開發工具發布了,一直對WP7很關注,現在終於可以開始學習了。其實09年就學習過silverlight,看過3的SDK文檔,當時因為工作,斷斷續續也沒有堅持下來,所以這次學習WP7順便重新學習SL。
上周安裝了WP7.1的開發環境,工作之餘看了一周文檔。目前關於WP的學習文檔大多是英文的,chian-pub上出現了一本中文的書,不過還是推薦看MSDN,上面有最新的WP7.1的內容,畢竟7.1進行了較大的更新。我寫Windows Phone開發的文章主要是對自己看的文檔進行一個提煉和記錄,主要針對wp7.1Beta。
一 Windows Phone 學習資料
目前主要的學習資料還是來至於微軟MSDN和《Programming Windows Phone 7》,其中MSDN包含了最新的7.1Beta特性的介紹和使用。一些中文網站和原創的BLOG文章基本也是來自這些地方。而MSDN雜誌每期有對Windows Phone介紹的文章。關於介面開發可以參考Silverlight開發。
Windows Phone 中文開發中心
Windwos Phone Development
Silverlight for Windows Phone
Phone Platform Development
Windows Phone developer documentation
Programming Windows Phone 7
視屏學習資料
Windows Phone 7 中文開發資料概覽
MSDN雜誌
二 Windows Phone 開發環境
微軟在5月份發布了代號Mango的最新開發工具,Windows Phone Developer Tools 7.1 Beta (點擊下載ISO檔案)
系統要求:
- 作業系統:Windows Vista SP2 / Windows 7
- 硬體要求:4G硬碟空間 3G記憶體
- 手機模擬器:DirectX10以上顯卡,WDDM1.1驅動
PS:我的筆記本是T2450+3G記憶體+HD2300顯卡,07年的了,正常運行。
安裝準備:
- 如果沒有安裝VS2010,可以直接安裝Windows Phone Developer Tools 7.1 Beta,他會內建Express版本的VS2010 for Windows Phone
- 如果安裝了VS2010專業版或者更高版本,可以直接安裝,但是必須把VS2010的語言修改成同Windows Phone Developer Tools 7.1 Beta相同的語言
- 如果安裝了VS2010 RTM版本,必須先安裝VS2010 SP1(點擊下載ISO檔案)
- 如果安裝了非英文版本的Windows Phone Developer Tools 7.0或 Expression Blend,必須先卸載在進行安裝
PS:我之前安裝了VS2010中文旗艦版,所以先安裝了SP1(安裝SP1時第一次到了一半就停住了,後來我查了說可能缺少檔案,就把VS2010的ISO也載入到虛擬光碟機中然後就通過了),但是因為Windows Phone Developer Tools 7.1 Beta目前只有英文版的,所以安裝完成後,並沒有在VS2010中整合WP7開發模板,但整合了XNA Game Studio的開發環境;而是安裝了VS2010 Express for Windows Phone。
三 第一個Windows Phone 7程式
我們可以看到其中有很多模板可以選擇,下面進行簡單介紹,具體可以建立相應項目查看
- Windwos Phone Application: 建立一個普通的Windows Phone應用程式
- Windwos Phone Databound Application: 建立一個和資料繫結有關的項目,使用列表和導航控制項
- Windows Phone Class Library:建立一個類庫項目
- Windwos Phone Panorama Application: 建立一個全景應用項目,使用全景Panorama控制項
- Windwos Phone Pivto Application:建立一個樞軸應用項目,使用Pivto控制項
- Windwos Phone 3D Graphics Application: 建立一個XNA架構支援的項目(WP7.1可以silverlight和XNA整合)
- Windwos Phone Audio Playback Application:建立一個音頻播放的類庫項目
- Windwos Phone Audio Streaming Application:建立一個音頻流的類庫項目
- Windwos Phone Task Scheduler Agent:建立一個背景工作代理項目(WP7.1中新增了後台多任務代理)
選擇了項目模板之後,就要選擇Windows Phone的開發版本,目前有7.0和7.1可以進行選擇。
就是WP7的開發環境,如果有開發過silverlight,應該不會陌生。左邊是圖形的介面環境,其他.NET其他開發環境一樣,可以拖控制項來布局。而右側是頁面的XAML代碼,可以通過編寫XAML來布局。關於XAML可以參見MSDN(點擊開啟)
我們的第一個程式要實現的是點擊頁面上的一個按鈕導航到下一個頁面:
1 在MainPage.xaml中添加一個按鈕,並且添加觸屏事件,代碼如下
[xhtml:collapse] + expand sourceview plaincopyprint?
- <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Width="250" Height="75" Content="Next Page" ManipulationStarted="Button_ManipulationStarted"/></Grid>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Width="250" Height="75" Content="Next Page" ManipulationStarted="Button_ManipulationStarted"/></Grid>2 為項目添加一個新的頁面,滑鼠右鍵--ADD--New Item--Windows Phone Portrait Page,名字為Page1.xaml,在次頁面中添加一個文本和一個返回按鈕,代碼如下:
[xhtml:collapse] + expand sourceview plaincopyprint?
- <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock VerticalAlignment="Top" HorizontalAlignment="Center" Margin="166,143,178,0">Hello World!</TextBlock> <Button Width="200" Height="75" Content="Back" ManipulationStarted="Button_ManipulationStarted"/> </Grid>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock VerticalAlignment="Top" HorizontalAlignment="Center" Margin="166,143,178,0">Hello World!</TextBlock> <Button Width="200" Height="75" Content="Back" ManipulationStarted="Button_ManipulationStarted"/> </Grid>
3 為MainPage.xaml的觸屏事件和Page1.xaml觸屏事件添加代碼(和C#其他項目一樣,也是採用code-behind,代碼在xaml頁面的cs檔案中)
[c-sharp:collapse] + expand sourceview plaincopyprint?
- //MainPage.xamlprivate void Button_ManipulationStarted(object sender, ManipulationStartedEventArgs e){ this.NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative));}//Page1.xamlprivate void Button_ManipulationStarted(object sender, ManipulationStartedEventArgs e){ this.NavigationService.GoBack();}
//MainPage.xamlprivate void Button_ManipulationStarted(object sender, ManipulationStartedEventArgs e){ this.NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative));}//Page1.xamlprivate void Button_ManipulationStarted(object sender, ManipulationStartedEventArgs e){ this.NavigationService.GoBack();}
4 編譯後點F5運行程式,模擬器第一次啟動需要等待(我也沒有真機,所以無法進行真機調試)。然後點擊Next Page按鈕程式將導航進入到第二個介面。第二個介面中點擊Back導航回前一個介面。可以發現Windows Phone程式同Web程式頁面有點類似,都是Page導航的概念,這個和之前WM平台很不一樣。但是使用過WPF或Silverlight就沒有什麼特別的。 5 進入第二個頁面後,點擊【<--】按鈕也能退回到第一個介面,在點【<--】按鈕,就會關閉程式。要注意的是,Windows Phone目前沒有提供任何退出程式的Exit方法,都是通過在第一個頁面點擊【<--】按鈕退出程式。在程式中點擊中間的Home按鈕返回到Home列表,此時程式會進入休眠(WP7.1)或墓碑(WP7.0)狀態,這個後面會介紹。
至此我們完成了第一個Windows Phone程式,它很簡單,看起來和寫一個普通的Silverlight程式沒有太大的區別。
四 Windows Phone項目結構
項目建立好之後,包含了以下一些檔案:
- AppManifest.xml : 此檔案中包含一個<Deployment.Parts>的節點。如果需要調用XAP檔案中包含的其他Assembly的DLL檔案,就會在此節點下添加一個<AssemblyPart/>節點來列舉這些檔案,可以參見這裡。
- AssemblyInfo.cs: 這個檔案包含了對當前程式集的資訊,可以在屬性頁面進行設定
- WMAppManifest.xml : 這個檔案主要記錄了程式的起始頁面,APPID,作者,表徵圖設定和程式功能設定。其中<Capabilities/>節點定義了程式的功能,比如ID_CAP_PHONEDIALER表示可以使用電話功能,如果沒有這個節點,調用相應功能時就會出錯,詳細介紹見這裡。相對於7.0,7.1增加了對相機,連絡人,約會提醒功能。
- App.xaml: 這個檔案App類繼承與Application類,它並沒有可視化介面,<Application.Resources/>一般用來存放資源資料共全域使用。而<Application.ApplicationLifetimeObjects/>節點下定義了與執行模型相關的一些方法。
- App.xaml.cs: App類的另一部分,程式碼封裝含了程式初始化操作和執行模型相關的一些方法的實現。
- ApplicationIcon.jpg: 顯示在程式列表中的表徵圖,大小為62*62
- Bcakground.jpg: 在程式啟動時顯示的表徵圖,大小為173*173s
- MainPage.xaml: 程式啟動後預設顯示的第一個頁面,使用者也可以在WMAppManifest.xml中指定啟動頁面。
- SplashScreenImage.jpg : 程式啟動時顯示的歡迎介面,大小為480*800,這個和裝置有關。
以上介紹了一個Windows Phone項目的結構,和Silverlight程式結構很類似。只是設定檔上有些區別。
五 總結
這裡完成了Windows Phone 7.1環境的搭建,並完成了第一個Windows Phone程式,對於程式模板和項目結構有了一個認識。下一篇將介紹Windows Phone架構結構,以及程式啟動運行方式。
轉自:http://blog.csdn.net/cc_net/article/details/6552867
本人覺得他寫的不錯,推薦給大家