解析开发中Windows Phone 7 CTP-April向Beta版的迁移

移动开发
本文向大家介绍一下WindowsPhone开发中WindowsPhone7CTP-April向Beta版迁移是如何实现,希望本文的介绍能让你有所收获。

本文和大家重点学习一下Windows Phone开发中WindowsPhone7CTP-April向Beta版迁移方面的内容,Windowsphone7从发布到现在一共出了三个版本的SDK,并且互不兼容。

Windows Phone开发中WindowsPhone7CTP-April向Beta版迁移

Windowsphone7从发布到现在一共出了三个版本的SDK,并且互不兼容。之前我写了第一版向第二版的迁移,现在来看一下第二版到Beta版的变化。

一.App.xaml和App.cs

1.App.xaml

Windows Phone开发中这个文件看上去比原来清爽了很多,没有大段大段的代码,这也看来也和新的模拟器风格有关。但是这样就会出问题了,原来的一个属性项没有了,造成原来的页面加载错误。

a.把PhoneTextPageTitle2Style改为PhoneTextNormalStyle或自已再增加一个这样的属性。

b

.<Application.RootVisual> 
 
<phoneNavigation:PhoneApplicationFramex:NamephoneNavigation:PhoneApplicationFramex:Name="RootFrame"Source="/MainPage.xaml"/> 
 
</Application.RootVisual> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

 

这一项被取消。从而造成无法启动应用程序。这个设置程序RootFrame的项被放到了配置文件里。

2.App.xaml.cs

同样的这个文件也发生了改变。改动也是比较大的。需要增加和去除一些代码(这里的Appp类的代码):

publicpartialclassApp:Application  
{  
publicPhoneApplicationFrameRootFrame{get;privateset;}  
 
//Constructor  
publicApp()  
{  
//Globalhandlerforuncaughtexceptions.  
//NotethatexceptionsthrownbyApplicationBarItem.Clickwillnotgetcaughthere.  
 
UnhandledException+=Application_UnhandledException;  
 
//StandardSilverlightinitialization  
InitializeComponent();  
 
//Phone-specificinitialization  
InitializePhoneApplication();  
}  
 
//Codetoexecutewhentheapplicationislaunching(eg,fromStart)  
 
//Thiscodewillnotexecutewhentheapplicationisreactivated  
 
privatevoidApplication_Launching(objectsender,LaunchingEventArgse)  
{  
}  
//Codetoexecutewhentheapplicationisactivated(broughttoforeground)  
//Thiscodewillnotexecutewhentheapplicationisfirstlaunched  
privatevoidApplication_Activated(objectsender,ActivatedEventArgse)  
{  
}  
 
//Codetoexecutewhentheapplicationisdeactivated(senttobackground)  
//Thiscodewillnotexecutewhentheapplicationisclosing  
privatevoidApplication_Deactivated(objectsender,DeactivatedEventArgse)  
{  
}  
 
//Codetoexecutewhentheapplicationisclosing(eg,userhitBack)  
 
//Thiscodewillnotexecutewhentheapplicationisdeactivated  
privatevoidApplication_Closing(objectsender,ClosingEventArgse)  
{  
}  
 
//Codetoexecuteifanavigationfails  
 
voidRootFrame_NavigationFailed(objectsender,NavigationFailedEventArgse)  
{  
if(System.Diagnostics.Debugger.IsAttached)  
{  
//Anavigationhasfailed;breakintothedebugger  
System.Diagnostics.Debugger.Break();  
}  
}  
//CodetoexecuteonUnhandledExceptions  
privatevoidApplication_UnhandledException(objectsender,ApplicationUnhandledExceptionEventArgse)  
{  
if(System.Diagnostics.Debugger.IsAttached)  
{  
 
//Anunhandledexceptionhasoccurred;breakintothedebugger  
System.Diagnostics.Debugger.Break();  
}  
}  
 
#regionPhoneapplicationinitialization  
//Avoiddouble-initialization  
privateboolphoneApplicationInitialized=false;  
//Donotaddanyadditionalcodetothismethod  
 
privatevoidInitializePhoneApplication()  
 
{  
if(phoneApplicationInitialized)  
return;  
//Createtheframebutdon'tsetitasRootVisualyet;thisallowsthesplash  
//screentoremainactiveuntiltheapplicationisreadytorender.  
 
RootFrame=newPhoneApplicationFrame();  
RootFrame.Navigated+=CompleteInitializePhoneApplication;  
 
//Handlenavigationfailures  
RootFrame.NavigationFailed+=RootFrame_NavigationFailed;  
 
//Ensurewedon'tinitializeagain  
phoneApplicationInitialized=true;  
}  
 
//Donotaddanyadditionalcodetothismethod  
privatevoidCompleteInitializePhoneApplication(objectsender,NavigationEventArgse)  
{  
//Settherootvisualtoallowtheapplicationtorender  
if(RootVisual!=RootFrame)  
RootVisual=RootFrame;  
 
//Removethishandlersinceitisnolongerneeded  
RootFrame.Navigated-=CompleteInitializePhoneApplication;  
}  
#endregion  
}  
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.

 

二.WMAppManifest.xml

这个文件也有一些小改动。但是这些改动会造成程序无法启动。

1.增加项

<Capabilities> 
 
<CapabilityNameCapabilityName="ID_CAP_NETWORKING"/> 
 
<CapabilityNameCapabilityName="ID_CAP_LOCATION"/> 
 
<CapabilityNameCapabilityName="ID_CAP_SENSORS"/> 
 
<CapabilityNameCapabilityName="ID_CAP_MICROPHONE"/> 
 
<CapabilityNameCapabilityName="ID_CAP_MEDIALIB"/> 
 
<CapabilityNameCapabilityName="ID_CAP_GAMERSERVICES"/> 
 
<CapabilityNameCapabilityName="ID_CAP_PHONEDIALER"/> 
 
<CapabilityNameCapabilityName="ID_CAP_PUSH_NOTIFICATION"/> 
 
<CapabilityNameCapabilityName="ID_CAP_WEBBROWSERCOMPONENT"/> 
 
</Capabilities> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

 

2.修改项

原来的:

<Tasks> 
 
<DefaultTaskNameDefaultTaskName="_default"PlaceHolderString="Defaulttask"/> 
 
</Tasks> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

 

修改后:

<Tasks> 
 
<DefaultTaskNameDefaultTaskName="_default"NavigationPage="MainPage.xaml"/> 
 
</Tasks> 
 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

 

三.Windows Phone开发中工程文件

增加了一个宏:WINDOWS_PHONE

<DefineConstants>DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE</DefineConstants>

四.Windows Phone开发中API

很多API被去掉,改名或并且,有相关的文档可以查。最主要的是这个Microsoft.Phone.dll的改动也会造成无法编译或无法启动程序。原来的Microsoft.Phone.Navigatio.dll被改为了System.Windows.Navigation.dll;

修改这两项:

xmlns:navigation="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
 
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone  
  • 1.
  • 2.
  • 3.

五.ApplicationBar

这个也发生了改变,去掉了x:Name项,增加了Text属性,这个属性必须加,否则运行时会报错。

六.其它:

这个Beta,变动比较大,所有API的改变都在它的文档里有说明。这里就不在赘述了。还有就是模拟器的变化,可以看到内嵌了Bing搜索,还带语音搜索功能。另外这个版本已经支持中文了!

 

责任编辑:佚名 来源: cnblogs.com
相关推荐

2010-07-21 09:11:57

Windows PhoWindows PhoWindows Pho

2010-03-09 10:51:15

Windows Pho

2010-05-11 16:47:32

Windows Pho

2010-05-21 16:24:05

Windows Pho

2010-06-21 15:39:59

Windows Pho

2010-04-08 17:40:23

Windows Pho

2013-07-30 11:18:37

Windows PhoWindows Pho

2010-06-11 16:01:26

Windows Pho

2010-05-08 16:36:16

Windows Pho

2012-08-16 10:35:50

Windows Pho

2011-06-07 11:35:38

Windows Pho

2010-12-14 18:48:49

微软

2010-12-21 10:02:48

SilverlightWindows Pho

2010-09-02 13:05:51

Windows PhoWindows Pho

2010-08-13 08:21:11

Windows Pho

2011-02-21 14:20:57

诺基亚开发者

2010-08-16 09:21:35

Windows Pho

2010-10-19 09:25:04

Adobe AcrobWindows Pho

2010-07-21 14:42:15

Windows Pho

2011-03-30 11:21:41

Windows Pho开发大赛
点赞
收藏

51CTO技术栈公众号