• 我的位置: 主頁 > 課程介紹 > net課程 >

    學習WPF-WPF應用程序管理

    2017-01-10 15:31
    來源:未知
    [導讀]一、 WPF 應用程序由 System.Windows.Application 類進行管理 二、創建 WPF 應用程序 創建WPF應用程序有兩種方式: 1、Visual Studio和Expression Blend默認的方式,使用App.xaml文件定義啟動應用程序 App.xaml文件的內容大致如下: 1:Applicationx:Class=Wp

    一、WPF應用程序由System.Windows.Application類進行管理

    二、創建WPF應用程序

    創建WPF應用程序有兩種方式:

    1、Visual Studio和Expression Blend默認的方式,使用App.xaml文件定義啟動應用程序

        App.xaml文件的內容大致如下:

       1:<Applicationx:Class="WpfApplicationLifeCycle.App"

       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

       4:     StartupUri="Window1.xaml">

       5:     <Application.Resources>

       6:     </Application.Resources>

       7:</Application>

        其中StartupUri指定啟動的WPF窗體

    2、可以自已定義類,定義Main方法實現對WPF應用程序的啟動

        在項目中添加一個類,類的代碼如下,在項目選項中,設定此類為啟動項。

       1:usingSystem;

       2:usingSystem.Windows;

       3: 

       4:namespaceWpfApplicationLifeCycle

       5:{

       6:     publicclassMainClass

       7:     {

       8:         [STAThread]

       9:         static void Main()

      10:         {

      11:             // 定義Application對象

      12:             Application app = new Application();

      13: 

      14:             // 方法一:調用Run方法,參數為啟動的窗體對象

      15:             Window2 win = new Window2();

      16:             app.Run(win);

      17: 

      18:             // 方法二:指定Application對象的MainWindow屬性為啟動窗體,調用無參數的Run方法

      19:             //Window2 win = new Window2();

      20:             //app.MainWindow = win;

      21:             //win.Show();           // 此處必須有win.Show(),否則不能顯示窗體

      22:             //app.Run();

      23: 

      24:             // 方法三:

      25:             //app.StartupUri = new Uri("Window2.xaml", UriKind.Relative);

      26:             //app.Run();

      27:         }

      28:     }

      29:}

    三、應用程序關閉

        應用程序關閉時的策略由ShutdownMode屬性指定,其類型為System.Windows.ShutdownMode枚舉類型,其枚舉成員有:

    • OnLastWindowClose(默認值):當應用程序中的最后一個窗體關閉時或調用Application對象的Shutdown()方法時,應用程序關閉。
    • OnMainWindowClose:當主窗體(即啟動窗體)關閉時或調用Application對象的Shutdown()方法時,應用程序關閉。(類似于C#Windows應用程序的關閉模式)
    • OnExplicitShutdown:只有在調用Application對象的Shutdown()方法時,應用程序才會關閉。

       更改的時候,可以直接在App.xaml中更改:

       1:<Applicationx:Class="WpfApplicationLifeCycle.App"

       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

       4:     StartupUri="Window1.xaml"

       5:     ShutdownMode="OnExplicitShutdown">

       6:     <Application.Resources>

       7:     </Application.Resources>

       8:</Application>

       也可以在代碼文件(App.xaml.cs)中更改

       1:Application app = newApplication();

       2:Window2 win = newWindow2();

       3: 

       4:// 更改關閉模式必須要在調用app.Run()方法之前

       5:app.ShutdownMode = ShutdownMode.OnExplicitShutdown;

       6:app.Run(win);

    四、Application對象的事件

    名稱

    說明

    Activated

    當應用程序成為前臺應用程序時發生。

    Deactivated

    當應用程序停止作為前臺應用程序時發生。

    DispatcherUnhandledException

    在異常由應用程序引發但未進行處理時發生。

    Exit

    恰好在應用程序關閉之前發生,且無法取消。

    FragmentNavigation

    當應用程序中的導航器開始導航至某個內容片斷時發生,如果所需片段位于當前內容中,則導航會立即發生;或者,如果所需片段位于不同內容中,則導航會在加載了源XAML 內容之后發生。

    LoadCompleted

    在已經加載、分析并開始呈現應用程序中的導航器導航到的內容時發生。

    Navigated

    在已經找到應用程序中的導航器要導航到的內容時發生,盡管此時該內容可能尚未完成加載。

    Navigating

    在應用程序中的導航器請求新導航時發生。

    NavigationFailed

    在應用程序中的導航器在導航到所請求內容時出現錯誤的情況下發生。

    NavigationProgress

    在由應用程序中的導航器管理的下載過程中定期發生,以提供導航進度信息。

    NavigationStopped

    在調用應用程序中的導航器的StopLoading 方法時發生,或者當導航器在當前導航正在進行期間請求了一個新導航時發生。

    SessionEnding

    在用戶通過注銷或關閉操作系統而結束Windows 會話時發生。

    Startup

    在調用Application 對象的Run 方法時發生。

    應用程序的事件處理可以:

    1、在App.xaml中做事件的綁定,在App.xaml.cs文件中添加事件的處理方法

        在App.xaml文件中:

       1:<Applicationx:Class="WpfApplicationLifeCycle.App"

       2:     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

       3:     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

       4:     StartupUri="Window1.xaml"

       5:     Startup="Application_Startup">

       6:     <Application.Resources>

       7:     </Application.Resources>

       8:</Application>

        在App.xaml.cs文件中:

       1:usingSystem.Windows;

       2: 

       3:namespaceWpfApplicationLifeCycle

       4:{

       5:     /// <summary>

       6:     /// Interaction logic for App.xaml

       7:     /// </summary>

       8:     publicpartialclassApp : Application

       9:     {

      10:         privatevoidApplication_Startup(objectsender, StartupEventArgs e)

      11:         {

      12:             // 定義應用程序啟動時要處理的內容

      13:         }

      14:     }

      15:}

    2、在自定義的類中可以做正常的C#的事件綁定:

       1:[STAThread]

       2:staticvoidMain()

       3:{

       4:     // 定義Application對象

       5:     Application app = newApplication();

       6:     Window2 win = newWindow2();

       7: 

       8:     // 添加事件的綁定

       9:     app.Startup += new StartupEventHandler(app_Startup);

      10: 

      11:     app.Run(win);

      12:}

      13: 

      14:staticvoidapp_Startup(objectsender, StartupEventArgs e)

      15:{

      16:    Window2win = new Window2();

                win.Show();

                win.button1.Content = "YOU!";

      17:}

         主窗體載入時,會在Window2里面定義的button1上面就會顯示YOU!

     

    五、WPF應用程序生存周期

    相關熱詞搜索: 推薦
    申請免費學習IT技術,參觀實力校園環境!
    我要預約

    我們將在24小時內聯系您確定報名信息