zoukankan      html  css  js  c++  java
  • 一起学Windows Phone7开发(十.Windows Phone 7 CTPApril 向Beta版迁移)

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

    一.App.xamlApp.cs

    1.       App.xaml

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

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

    b.       <Application.RootVisual>

            <phoneNavigation:PhoneApplicationFrame x:Name="RootFrame" Source="/MainPage.xaml"/>

        </Application.RootVisual>

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

     

    2.       App.xaml.cs

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

     public partial class App : Application

        {

            public PhoneApplicationFrame RootFrame { get; private set; }

     

            // Constructor

            public App()

            {

                // Global handler for uncaught exceptions.

                // Note that exceptions thrown by ApplicationBarItem.Click will not get caught here.

                UnhandledException += Application_UnhandledException;

     

                // Standard Silverlight initialization

                InitializeComponent();

     

                // Phone-specific initialization

                InitializePhoneApplication();

            }

     

            // Code to execute when the application is launching (eg, from Start)

            // This code will not execute when the application is reactivated

            private void Application_Launching(object sender, LaunchingEventArgs e)

            {

            }

     

            // Code to execute when the application is activated (brought to foreground)

            // This code will not execute when the application is first launched

            private void Application_Activated(object sender, ActivatedEventArgs e)

            {

            }

     

            // Code to execute when the application is deactivated (sent to background)

            // This code will not execute when the application is closing

            private void Application_Deactivated(object sender, DeactivatedEventArgs e)

            {

            }

     

            // Code to execute when the application is closing (eg, user hit Back)

            // This code will not execute when the application is deactivated

            private void Application_Closing(object sender, ClosingEventArgs e)

            {

            }

     

            // Code to execute if a navigation fails

            void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)

            {

                if (System.Diagnostics.Debugger.IsAttached)

                {

                   // A navigation has failed; break into the debugger

                    System.Diagnostics.Debugger.Break();

                }

            }

     

            // Code to execute on Unhandled Exceptions

            private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)

            {

                if (System.Diagnostics.Debugger.IsAttached)

                {

                    // An unhandled exception has occurred; break into the debugger

                    System.Diagnostics.Debugger.Break();

                }

            }

     

            #region Phone application initialization

     

            // Avoid double-initialization

            private bool phoneApplicationInitialized = false;

     

            // Do not add any additional code to this method

            private void InitializePhoneApplication()

            {

                if (phoneApplicationInitialized)

                    return;

     

                // Create the frame but don't set it as RootVisual yet; this allows the splash

                // screen to remain active until the application is ready to render.

                RootFrame = new PhoneApplicationFrame();

                RootFrame.Navigated += CompleteInitializePhoneApplication;

     

                // Handle navigation failures

                RootFrame.NavigationFailed += RootFrame_NavigationFailed;

     

                // Ensure we don't initialize again

                phoneApplicationInitialized = true;

            }

     

            // Do not add any additional code to this method

            private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)

            {

                // Set the root visual to allow the application to render

                if (RootVisual != RootFrame)

                    RootVisual = RootFrame;

     

                // Remove this handler since it is no longer needed

                RootFrame.Navigated -= CompleteInitializePhoneApplication;

            }

     

            #endregion

        }

     

    二.WMAppManifest.xml

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

    1.       增加项

    <Capabilities>

          <Capability Name="ID_CAP_NETWORKING" />

          <Capability Name="ID_CAP_LOCATION" />

          <Capability Name="ID_CAP_SENSORS" />

          <Capability Name="ID_CAP_MICROPHONE" />

          <Capability Name="ID_CAP_MEDIALIB" />

          <Capability Name="ID_CAP_GAMERSERVICES" />

          <Capability Name="ID_CAP_PHONEDIALER" />

          <Capability Name="ID_CAP_PUSH_NOTIFICATION" />

          <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />

        </Capabilities>

    2.       修改项

    原来的:

    <Tasks>

          <DefaultTask Name ="_default" PlaceHolderString="Default task"/>

    </Tasks>

                       修改后:

                                <Tasks>

                                 <DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/>

                    </Tasks>

    三.工程文件

    增加了一个宏:WINDOWS_PHONE

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

    四.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"

     

    五.Application Bar

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

     

    六.其它:

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

  • 相关阅读:
    zoj 1239 Hanoi Tower Troubles Again!
    zoj 1221 Risk
    uva 10192 Vacation
    uva 10066 The Twin Towers
    uva 531 Compromise
    uva 103 Stacking Boxes
    稳定婚姻模型
    Ants UVA
    Golden Tiger Claw UVA
    关于upper、lower bound 的探讨
  • 原文地址:https://www.cnblogs.com/randylee/p/1777036.html
Copyright © 2011-2022 走看看