解析开发中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

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

 

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

2.App.xaml.cs

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

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

 

二.WMAppManifest.xml

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

1.增加项

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

 

2.修改项

原来的:

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

 

修改后:

  1. <Tasks> 
  2.  
  3. <DefaultTaskNameDefaultTaskName="_default"NavigationPage="MainPage.xaml"/> 
  4.  
  5. </Tasks> 
  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;

修改这两项:

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

五.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-06-21 15:39:59

Windows Pho

2010-05-21 16:24:05

Windows Pho

2010-05-11 16:47:32

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

2010-12-21 10:02:48

SilverlightWindows Pho

2011-06-07 11:35:38

Windows Pho

2012-08-16 10:35:50

Windows Pho

2010-12-14 18:48:49

微软

2010-09-02 13:05:51

Windows PhoWindows Pho

2011-02-21 14:20:57

诺基亚开发者

2010-08-13 08:21:11

Windows Pho

2010-08-16 09:21:35

Windows Pho

2010-10-19 09:25:04

Adobe AcrobWindows Pho

2012-05-17 14:15:10

Windows Pho

2010-07-21 14:42:15

Windows Pho
点赞
收藏

51CTO技术栈公众号