小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Windows Phone開發(fā)(2):WP7 Silverlight應(yīng)用程序開發(fā)概要及相關(guān)知識(shí)

 蝸牛之窩 2011-03-28
 
這篇文章講述如何創(chuàng)建,部署,調(diào)試以、運(yùn)行Silverlight for Windows Phone應(yīng)用程序及相關(guān)知識(shí),同時(shí)介紹如何使用Microsoft Visual Studio 2010 Express for Windows Phone以及Windows Phone Emulator(模擬器)。在文章中會(huì)建立一個(gè)叫做SilverRadio的Silverlight for Windows Phone應(yīng)用程序,我把這個(gè)程序取名為銀光收音機(jī),這個(gè)程序用于收聽網(wǎng)絡(luò)電臺(tái)節(jié)目。

新建Silverlight for Windows Phone項(xiàng)目
點(diǎn)擊 Start -> All Programs -> Microsoft Visual Studio 2010 Express -> Microsoft Visual Studio 2010 Express for Windows Phone 。啟動(dòng)Microsoft Visual Studio 2010 Express for Windows Phone


在File菜單下點(diǎn)擊New Project。


在New Project對(duì)話框下選擇Silverlight for Windows Phone目錄,然后選擇Windows Phone Application模板,項(xiàng)目名字取名為SilverRadio,然后點(diǎn)擊OK按鈕。


一個(gè)Silverlight for Windows Phone的項(xiàng)目就創(chuàng)建成功了,下面看看Windows Phone Application模板為我們創(chuàng)建了那些文件。

模板生成文件結(jié)構(gòu)
在Solution Explorer(解決方案瀏覽器)可以看到Windows Phone Application 模板為SilverRadio項(xiàng)目所創(chuàng)建的目錄結(jié)構(gòu)以及文件。


App.xaml和App.xaml.cs定義程序的入口點(diǎn),初始化應(yīng)用程序級(jí)別的全局資源,顯示程序的UI。
MainPage.xaml和MainPage.xaml.cs定義一個(gè)UI的頁面,通常Silverlight程序的模板會(huì)生成一個(gè)叫做MainPage.xaml和MainPage.xaml.cs的UI頁面作為默認(rèn)的啟動(dòng)UI,但是UI啟動(dòng)頁面不是必須取MainPage作為名字,只是一個(gè)慣例。如果需要修改第一個(gè)啟動(dòng)頁面可以在WMAppManifest.xml 修改下面的NavigationPage屬性。
<Tasks>
<DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/>
</Tasks>
ApplicationIcon.png是在Phone application List顯示的圖標(biāo),例如下面模擬器顯示SilverRadio的圖標(biāo)。


Background.png用于 start screen(啟動(dòng)屏幕)顯示的圖標(biāo)
SplashScreenImage.jpg 當(dāng)程序啟動(dòng)的時(shí)候,在第一個(gè)頁面啟動(dòng)之前顯示的圖片。
Properties\AppManifest.xml 程序打包的manifest(定義)文件。Silverlight程序最終會(huì)打成XAP包,這個(gè)XAP包是zip格式的文件,里面包含了程序需要用到的所有資源(例如圖片,聲音文件等等),依賴的第三方DLL等等。AppManifest.xml文件用于定義打包的結(jié)構(gòu)。 下圖為生成的xap的。


如果把SilverRadio.xap文件改名為SilverRadio.zip,然后解壓,能看到程序發(fā)布時(shí)候所有的文件,這些文件的結(jié)構(gòu)由AppManifest.xml來定義。




Properties\AssemblyInfo.cs 包含版本信息等metadata(源數(shù)據(jù)),這個(gè)文件與ASP.NET,Winform程序的AssemblyInfo.cs文件功能一致。

Properties\WMAppManifest.xml 與AppManifest.xml一樣也是程序打包的manifest(定義)文件,但是WMAppManifest.xml專門指定Windows Phone Silverlight應(yīng)用程序相關(guān)的metadata(源數(shù)據(jù)),例如上述的啟動(dòng)頁面MainPage.xaml在WMAppManifest.xml里面定義。
一般來說不要手工修改WMAppManifest.xml和AppManifest.xml文件,可以通過項(xiàng)目屬性文件來修改。如下圖:




References 文件夾顯示一些依賴的DLL等相關(guān)資源,由于Windows Phone開發(fā)工具的Beta把多個(gè)DLL合并到Microsoft.Phone.dll,所以模擬的項(xiàng)目包含了Microsoft.Phone.dll和Microsoft.Phone.Interop.dll兩個(gè)Windows Phone相關(guān)的DLL,如果需要使用到其他DLL,例如在我們系列教材中會(huì)使用到LINQ for XML,那么會(huì)把System.Xml.Linq.DLL增加到References文件夾里面。

App.xaml講解
在XAML中每個(gè)元素都對(duì)應(yīng)Silverlight的一個(gè)類,任何類都XAML元素都可以找到一模一樣名字的Silverlight類,例如<Application>可以找到System.Windows.Application類。把鼠標(biāo)當(dāng)?shù)繟pplication標(biāo)簽就能顯示在.NET Framework對(duì)應(yīng)的的類。


由于名字一一對(duì)應(yīng),所以有可能多于一個(gè)類被命名為同樣的名字。因此引入命名空間的概念。使用了命名空間以后,XAML的解釋器就可以找到正確的對(duì)應(yīng)類。 沒有XAML文件都會(huì)解析成.NET的類,然后編譯成可執(zhí)行文件(例如DLL或者exe),這個(gè)在下面講述。
在XAML中xmlns屬性用于聲明命名空間, Beta版本W(wǎng)indows Phone Application模板自動(dòng)生成以下命名空間。

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone">

其他頁面還包含xmlns:d, xmlns:mc和mc:Ignorable,在上面的代碼中,前兩個(gè)是Silverlight重要的命名空間。
http://schemas.microsoft.com/winfx/2006/xaml/presentation是Silverlight核心(core) 命名空間,其包含Silverlight所有基礎(chǔ)類,例如Application和Grid等等,如果在XAML使用該命名空間的類,不需要指定前綴,因此這是默認(rèn)命名空間,換句話說,沒有前綴的元素全部映射到該命名空間里面。
http://schemas.microsoft.com/winfx/2006/xaml是XAML的命名空間,其包含了XAML的相關(guān)特性。使用該命名空間需要指定前綴x,其可以用于元素或者屬性,例如<x:ElementName>或者 x:Class="ClassName"。
clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone和clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone都是Silverlight for Windows Phone特有的命名空間,由于Beta版把下面所列出的CTP版包含的DLL合并到Microsoft.Phone.dll里面,所以這兩個(gè)命名空間都位于Microsoft.Phone.dll里面。
# Microsoft.Phone.Shell.dll
# Microsoft.Phone.Controls.Navigation.dll
# Microsoft.Phone.Controls.dll
# Microsoft.Phone.Controls.WebBrowser.dll
# Microsoft.Phone.Notification.dll
# Microsoft.Phone.License.dll
# Microsoft.Devices.dll
# Microsoft.Phone.Execution.dll
# Microsoft.Phone.Info.dll
# Microsoft.Phone.Tasks.dll
Microsoft.Phone.Shell包含了應(yīng)用程序全局信息的類,例如 PhoneApplicationService 和 ApplicationBar。
· <Application.ApplicationLifetimeObjects>
· <!--Required object that handles lifetime events for the application-->
· <shell:PhoneApplicationService
· Launching="Application_Launching" Closing="Application_Closing"
· Activated="Application_Activated" Deactivated="Application_Deactivated"/>
· </Application.ApplicationLifetimeObjects>

在上面的代碼中,定義了程序級(jí)別的全局事件,Windows Phone 7只是支持一個(gè)活動(dòng)的應(yīng)用程序,因此其他程序被激活的時(shí)候,當(dāng)前程序就會(huì)被送到后臺(tái),Application_Deactivated函數(shù)可以處理程序失去激活狀態(tài)。而程序再次激活的時(shí)候,會(huì)調(diào)用Application_Activated函數(shù)。
而Microsoft.Phone.Controls包含了Windows Phone應(yīng)用程序的框架,例如PhoneApplicationFrame,PhoneApplicationPage和WebBrowser等等。

XMAL解釋器
上面講述到命名空間是為了解決XMAL解釋器名字沖突的問題,下面簡(jiǎn)單看看XMAL解釋器生成的中間文件。

在Silverlight程序的編譯過程中XAML解釋器在obj文件夾會(huì)生成一些中間文件,如下圖的App.g.cs和MainPage.g.cs文件。


在Visual Studio的Solution視圖點(diǎn)擊Show All Files按鈕也能看到


點(diǎn)擊Show All Files以后就能看到App.g.cs等中間文件。


在開發(fā)過程中很多其他問題解決不了,很可能需要查看這些*.g.cs的中間文件來解決。

MainPage.xaml講解
與App.xaml比,MainPage.xaml多了以下的命名空間。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas./markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
http://schemas.microsoft.com/expression/blend/2008 包含XAML設(shè)計(jì)時(shí)(design-time)的特性。例如上述例子設(shè)置設(shè)計(jì)時(shí)的長度和寬度。
http://schemas./markup-compatibility/2006表示XAML的兼容性,使得XAML解釋器知道那些元素需要處理,那些元素需要忽略,例如上述例子忽略前綴為d的元素。

MainPage.xaml默認(rèn)生成的文件使用Grid來布局
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="24,24,0,12">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="-3,-8,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentGrid" Grid.Row="1">
</Grid>
</Grid>

在Silverlight for Windows Phone,主要有三大UI布局容器,Canvas,Grid和StackPanel,,這里簡(jiǎn)單講述他們的區(qū)別,Canvas是絕對(duì)定位,Grid是網(wǎng)格定位,而StackPanel是按照子控件的順序相對(duì)定位。這與Silverlight開發(fā)是一樣的,在學(xué)習(xí)開發(fā)Windows Phone應(yīng)用程序,建議先學(xué)習(xí)Silverlight編程基礎(chǔ)。
Grid.RowDefinitions用于定義行的信息,其中Height(高度)可以制定具體值,Auto表示根據(jù)子元素的高度來決定行的高度,*表示除了其他行以外剩下所以的空間作為高度。
TitlePanel有一個(gè)屬性Grid.Row=”0”表示這個(gè)控件在父Grid的第零行(和C一樣從零開始),Grid.Row叫做Attached Properties(附帶屬性)。叫做Attached Properties可以在子元素里面指定父元素的屬性,例如TitlePanel可以制定自己位于父Grid的第零行。做過HTML的人都知道,HTML的table需要td和tr來布局,擁有了Attached Properties布局簡(jiǎn)化了很多很多。
在這個(gè)例子中,我把標(biāo)題改成“銀光收音機(jī)”
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="24,24,0,12">
<TextBlock x:Name="ApplicationTitle" Text="銀光收音機(jī)" Style="{StaticResource PhoneTextNormalStyle}"/>
</StackPanel>

在設(shè)計(jì)視圖就能看到修改后的布局,如下圖。



編譯
由于Silverlight for Windows Phone使用Visual Studio 2010作為IDE,Windows Phone的編譯過程與其他項(xiàng)目,例如ASP.NET,Winform等基本一模一樣。右鍵項(xiàng)目文件,點(diǎn)擊“Build”菜單可以編譯項(xiàng)目,或者按F6快捷鍵也可以編譯項(xiàng)目,我個(gè)人習(xí)慣使用Ctrl+Shift+B一起編譯整個(gè)解決方案(Solution)。編譯的時(shí)候,如果想查看錯(cuò)誤信息可以查看“Error List” Tab,點(diǎn)擊View->Other Windows->Error List菜單可以打開“Error List” Tab。為了演示,我特意做了一個(gè)錯(cuò)誤。


可是我發(fā)現(xiàn)Visual Studio Express for Windows Phone不支持看“Output” Tab。
模擬器
在上篇文章講述過打開模擬器的方法,請(qǐng)參考上篇文章。
Windows Phone與Windows Mobile很大的區(qū)別是Windows Phone嚴(yán)格規(guī)定了硬件的規(guī)格,手機(jī)生產(chǎn)商必須嚴(yán)格按照微軟的規(guī)范來生產(chǎn)Windows Phone,這樣有個(gè)好處是程序的通用性,一個(gè)程序可以同時(shí)支持不同廠商的手機(jī)設(shè)備,不像Windows Mobile那樣,開發(fā)的時(shí)候還有考慮分辨率,重力加速器(Accelerometer),按鈕布局,光電鼠標(biāo)等等差異性。由于標(biāo)準(zhǔn)化了硬件的規(guī)格,Windows Phone的程序如果在模擬器能正常運(yùn)行,那么應(yīng)該能在所有Windows Phone設(shè)備上運(yùn)行。下面是Windows Phone的模擬器。


小提示:模擬器第一次啟動(dòng)時(shí)候會(huì)比較慢,所以調(diào)試程序完畢請(qǐng)不好關(guān)閉模擬器,下次調(diào)試直接部署程序就可以了。
近來有些人反映Windows Phone的模擬器啟動(dòng)速度特別慢,其實(shí)這個(gè)模擬器是可以通過修改硬件虛擬化協(xié)助(Hardware-assisted virtualization)設(shè)置來加速Windows Phone模擬器,有興趣可以參考Optimizing Performance for Windows Phone Emulator.
與模擬器一樣,每臺(tái)Windows Phone設(shè)備都會(huì)有三個(gè)按鈕,回退按鈕點(diǎn)擊的時(shí)候會(huì)回退到上一層頁面或者前一個(gè)應(yīng)用,Start按鈕回到主頁面,搜索按鈕進(jìn)入搜索。需要注意的是,由于Windows Phone只是允許一個(gè)活動(dòng)的應(yīng)用程序,因此用戶點(diǎn)擊Start按鈕或者回退按鈕的時(shí)候可能把退出當(dāng)前應(yīng)用,開發(fā)的時(shí)候可以通過Application_Deactivated和Application_Activated 函數(shù)來處理程序失去活動(dòng)狀態(tài)和激活的事件。

調(diào)試
Windows Phone程序的調(diào)試過程與其他使用Visual Stadio開發(fā)的程序一樣,如果使用Visual Stadio做過ASP.NET或者Winform開發(fā)的話,基本不需要學(xué)習(xí)就能掌握Windows Phone程序的調(diào)試過程。下面簡(jiǎn)單描述一下Windows Phone程序的調(diào)試過程。
點(diǎn)擊F9或者直接用鼠標(biāo)在Visual Stadio增加斷點(diǎn)。
選擇Windows Phone Emulator,點(diǎn)擊 “” 按鈕啟動(dòng)調(diào)試?;蛘唿c(diǎn)擊F5啟動(dòng)調(diào)試。



如果程序邏輯運(yùn)行到該斷點(diǎn)如果,那么程序會(huì)自動(dòng)停留在斷點(diǎn)上。


點(diǎn)擊Shift+F5停止調(diào)試。再次提醒不需要關(guān)閉Windows Phone模擬器,下次調(diào)試不需要重新啟動(dòng)Windows Phone模擬器,節(jié)省時(shí)間。
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多