溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

WPF 應(yīng)用程序管理(二)

發(fā)布時(shí)間:2020-07-09 14:16:04 來源:網(wǎng)絡(luò) 閱讀:358 作者:kyirsheng 欄目:編程語(yǔ)言

一、WPF 應(yīng)用程序由 System.Windows.Application 類進(jìn)行管理

二、創(chuàng)建 WPF 應(yīng)用程序

創(chuàng)建 WPF 應(yīng)用程序有兩種方式:
1、Visual Studio 和 Expression Blend 默認(rèn)的方式,使用 App.xaml 文件定義啟動(dòng)應(yīng)用
程序
App.xaml 文件的內(nèi)容大致如下:

1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen
tation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: StartupUri="Window1.xaml">
5: <Application.Resources>
6: </Application.Resources>
7: </Application>

其中 StartupUri 指定啟動(dòng)的 WPF 窗體
2、可以自已定義類,定義 Main 方法實(shí)現(xiàn)對(duì) WPF 應(yīng)用程序的啟動(dòng)
在項(xiàng)目中添加一個(gè)類,類的代碼如下,在項(xiàng)目選項(xiàng)中,設(shè)定此類為啟動(dòng)項(xiàng)。
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 對(duì)象
12: Application app = new Application();
13:
14: // 方法一:調(diào)用 Run 方法,參數(shù)為啟動(dòng)的窗體對(duì)象
15: Window2 win = new Window2();
16: app.Run(win);
17:
18: // 方法二:指定 Application 對(duì)象的 MainWindow 屬性為啟動(dòng)窗體,
調(diào)用無(wú)參數(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: }

三、應(yīng)用程序關(guān)閉
應(yīng)用程序關(guān)閉時(shí)的策略由 ShutdownMode 屬性指定,其類型為 System.Window
s.ShutdownMode 枚舉類型,其枚舉成員有:
OnLastWindowClose(默認(rèn)值):當(dāng)應(yīng)用程序中的最后一個(gè)窗體關(guān)閉時(shí)或調(diào)用 Applic
ation 對(duì)象的 Shutdown()方法時(shí),應(yīng)用程序關(guān)閉;
OnMainWindowClose:當(dāng)主窗體(即啟動(dòng)窗體)關(guān)閉時(shí)或調(diào)用 Application 對(duì)象的 S
hutdown()方法時(shí),應(yīng)用程序關(guān)閉。(類似于 C#的 Windows 應(yīng)用程序的關(guān)閉模式);
OnExplicitShutdown:只有在調(diào)用 Application 對(duì)象的 Shutdown()方法時(shí),應(yīng)用
程序才會(huì)關(guān)閉;
更改的時(shí)候,可以直接在 App.xaml 中更改:

1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen
tation"
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: // 更改關(guān)閉模式必須要在調(diào)用 app.Run()方法之前
5: app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
6: app.Run(win);

四、Application 對(duì)象的事件

WPF 應(yīng)用程序管理(二)

應(yīng)用程序的事件處理可以:
1、在 App.xaml 中做事件的綁定,在 App.xaml.cs 文件中添加事件的處理方法
在 App.xaml 文件中:
1: <Application x:Class="WpfApplicationLifeCycle.App"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presen
tation"
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, Startup
EventArgs e)
11: {
12: // 定義應(yīng)用程序啟動(dòng)時(shí)要處理的內(nèi)容
13: }
14: }
15: }

2、在自定義的類中可以做正常的 C#的事件綁定:
1: [STAThread]
2: static void Main()
3: {
4: // 定義 Application 對(duì)象
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: }

主窗體載入時(shí),會(huì)在 Window2 里面定義的 button1 上面就會(huì)顯示 YOU!
五、WPF 應(yīng)用程序生存周期

WPF 應(yīng)用程序管理(二)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI