WPF應用程序管理(更多資源:http://cleopard.download.csdn.net/)html
1、WPF應用程序由System.Windows.Application類進行管理app
2、建立WPF應用程序spa
建立WPF應用程序有兩種方式:操作系統
一、Visual Studio和Expression Blend默認的方式,使用App.xaml文件定義啓動應用程序.net
App.xaml文件的內容大體以下:xml
1: <Application x:Class="WpfApplicationLifeCycle.App"htm
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"對象
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"blog
4: StartupUri="Window1.xaml">事件
5: <Application.Resources>
6: </Application.Resources>
7: </Application>
其中StartupUri指定啓動的WPF窗體
二、能夠自已定義類,定義Main方法實現對WPF應用程序的啓動
在項目中添加一個類,類的代碼以下,在項目選項中,設定此類爲啓動項。
1: using System;
2: using System.Windows;
3:
4: namespace WpfApplicationLifeCycle
5: {
6: public class MainClass
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: }
3、應用程序關閉
應用程序關閉時的策略由ShutdownMode屬性指定,其類型爲System.Windows.ShutdownMode枚舉類型,其枚舉成員有:
更改的時候,能夠直接在App.xaml中更改:
1: <Application x: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 = new Application();
2: Window2 win = new Window2();
3:
4: // 更改關閉模式必需要在調用app.Run()方法以前
5: app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
6: app.Run(win);
4、Application對象的事件
名稱 |
說明 |
Activated |
當應用程序成爲前臺應用程序時發生。 |
Deactivated |
當應用程序中止做爲前臺應用程序時發生。 |
DispatcherUnhandledException |
在異常由應用程序引起但未進行處理時發生。 |
Exit |
剛好在應用程序關閉以前發生,且沒法取消。 |
FragmentNavigation |
當應用程序中的導航器開始導航至某個內容片段時發生,若是所需片斷位於當前內容中,則導航會當即發生;或者,若是所需片斷位於不一樣內容中,則導航會在加載了源 XAML 內容以後發生。 |
LoadCompleted |
在已經加載、分析並開始呈現應用程序中的導航器導航到的內容時發生。 |
Navigated |
在已經找到應用程序中的導航器要導航到的內容時發生,儘管此時該內容可能還沒有完成加載。 |
Navigating |
在應用程序中的導航器請求新導航時發生。 |
NavigationFailed |
在應用程序中的導航器在導航到所請求內容時出現錯誤的狀況下發生。 |
NavigationProgress |
在由應用程序中的導航器管理的下載過程當中按期發生,以提供導航進度信息。 |
NavigationStopped |
在調用應用程序中的導航器的 StopLoading 方法時發生,或者當導航器在當前導航正在進行期間請求了一個新導航時發生。 |
SessionEnding |
在用戶經過註銷或關閉操做系統而結束 Windows 會話時發生。 |
Startup |
在調用 Application 對象的 Run 方法時發生。 |
應用程序的事件處理能夠:
一、在App.xaml中作事件的綁定,在App.xaml.cs文件中添加事件的處理方法
在App.xaml文件中:
1: <Application x: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: using System.Windows;
2:
3: namespace WpfApplicationLifeCycle
4: {
5: /// <summary>
6: /// Interaction logic for App.xaml
7: /// </summary>
8: public partial class App : Application
9: {
10: private void Application_Startup(object sender, StartupEventArgs e)
11: {
12: // 定義應用程序啓動時要處理的內容
13: }
14: }
15: }
二、在自定義的類中能夠作正常的C#的事件綁定:
1: [STAThread]
2: static void Main()
3: {
4: // 定義Application對象
5: Application app = new Application();
6: Window2 win = new Window2();
7:
8: // 添加事件的綁定
9: app.Startup += new StartupEventHandler(app_Startup);
10:
11: app.Run(win);
12: }
13:
14: static void app_Startup(object sender, StartupEventArgs e)
15: {
16: Window2 win = new Window2();
win.Show();
win.button1.Content = "YOU!";
17: }
主窗體載入時,會在Window2裏面定義的button1上面就會顯示YOU!
5、WPF應用程序生存週期