一、WPF 應用程序由 System.Windows.Application 類進行管理
目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)頁空間、網(wǎng)站托管、企業(yè)網(wǎng)站設計、崇義網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
二、創(chuàng)建 WPF 應用程序
創(chuàng)建 WPF 應用程序有兩種方式:
1、Visual Studio 和 Expression Blend 默認的方式,使用 App.xaml 文件定義啟動應用
程序
App.xaml 文件的內(nèi)容大致如下:
1:
tation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml">
5:
6:
7:
其中 StartupUri 指定啟動的 WPF 窗體
2、可以自已定義類,定義 Main 方法實現(xiàn)對 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: // 方法一:調(diào)用 Run 方法,參數(shù)為啟動的窗體對象
15: Window2 win = new Window2();
16: app.Run(win);
17:
18: // 方法二:指定 Application 對象的 MainWindow 屬性為啟動窗體,
調(diào)用無參數(shù)的 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.R
elative);
26: //app.Run();
27: }
28: }
29: }
三、應用程序關閉
應用程序關閉時的策略由 ShutdownMode 屬性指定,其類型為 System.Window
s.ShutdownMode 枚舉類型,其枚舉成員有:
OnLastWindowClose(默認值):當應用程序中的最后一個窗體關閉時或調(diào)用 Applic
ation 對象的 Shutdown()方法時,應用程序關閉;
OnMainWindowClose:當主窗體(即啟動窗體)關閉時或調(diào)用 Application 對象的 S
hutdown()方法時,應用程序關閉。(類似于 C#的 Windows 應用程序的關閉模式);
OnExplicitShutdown:只有在調(diào)用 Application 對象的 Shutdown()方法時,應用
程序才會關閉;
更改的時候,可以直接在 App.xaml 中更改:
1:
tation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml"
5: ShutdownMode="OnExplicitShutdown">
6:
7:
8:
也可以在代碼文件(App.xaml.cs)中更改
1: Application app = new Application();
2: Window2 win = new Window2();
3:
4: // 更改關閉模式必須要在調(diào)用 app.Run()方法之前
5: app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
6: app.Run(win);
四、Application 對象的事件
應用程序的事件處理可以:
1、在 App.xaml 中做事件的綁定,在 App.xaml.cs 文件中添加事件的處理方法
在 App.xaml 文件中:
1:
tation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml"
5: Startup="Application_Startup">
6:
7:
8:
在 App.xaml.cs 文件中:
1: using System.Windows;
2:
3: namespace WpfApplicationLifeCycle
4: {
5: ///
6: /// Interaction logic for App.xaml
7: ///
8: public partial class App : Application
9: {
10: private void Application_Startup(object sender, Startup
EventArgs e)
11: {
12: // 定義應用程序啟動時要處理的內(nèi)容
13: }
14: }
15: }
2、在自定義的類中可以做正常的 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!
五、WPF 應用程序生存周期