1. 程式人生 > >WPF簡單教程:Application類的使用

WPF簡單教程:Application類的使用

Application類是WPF型別中的一個基礎,是每一個WPF必有的部分。

Application類在應用程式中所處的位置

WPF應用程式中,Application類例項是應用程式例項的代表,每個WPF應用程式中都存在一個Application例項,它用於接收程式引數,處理程式事件。

一個不使用WPF XAML框架的應用程式例項程式碼

使用Application類的最簡單方式是手動建立它。下面例項簡單的演示了最小的應用程式:在應用程式的入口處建立名為Window1的視窗,並啟動一個新的應用程式:

using System;
using System.Windows;

public
class Startup{ static void Main(){ //create the application Application app = new Application(); //create the main window. Window1 win = new Window1(); //Launch the application and show the main window. app.Run(win); }}

如果希望通過Main方法啟動應用程式並處理傳遞引數,可以通過在WPF程式中改變VS屬性配置來設定某個含有Main方法的類最為啟動物件。

可以看出在應用程式中,啟動順序一般都是啟動main方法,然後例項化application類,之後想application類中傳遞介面例項,這樣應用程式就啟動起來了。
然而真正的WPF肯定不是利用這種方法啟動的,從程式碼和邏輯的表現上看就不一樣。
但是肯定類似。

經典的WPF應用程式啟動例項

下面是一個常見WPF專案中app.xaml的程式碼

<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp1" StartupUri="Window1.xaml" ShutdownMode="OnLastWindowClose">
<Application.Resources> </Application.Resources> </Application>

本例中採用了app.xaml來配置應用程式,它製造了一個派生類App,派生於Application類,位置在於WpfApp1.App。可以看到WPF工程中是沒有Main方法存在的,它應該利用了某種框架提供的類似方法,在利用反射等預設機制工作的過程中呼叫了Main方法。Main方法肯定是存在的,但是讓WPF框架給藏起來了。

xaml檔案是WPF工程中的類模板,VS利用XAML語句自動生成C#類App.g.cs。

StartupUri指定了應用程式啟動的主介面是什麼。在WpfApp1.App中可以自定義語句用來處理App接收到的命令列引數和應用程式事件處理程式碼。一般用於處理應用程式事件的方法可以利用繼承特性重寫,另一方面可以利用app.xaml配置之後關聯方法。一般採用app.xaml進行配置,這樣比較清楚明白。

App.xaml還可以這麼用

<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp1"
             Startup="Application_Startup"
             ShutdownMode="OnLastWindowClose">
    <Application.Resources>

    </Application.Resources>
</Application>
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp1
{
    /// <summary>
    /// App.xaml 的互動邏輯
    /// </summary>
    public partial class App : Application
    {
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            MainWindow fMain = new WpfApp1.MainWindow();
            frmLogin fLogin = new frmLogin();
            if(fLogin.ShowDialog() == true)
            {
                fMain.Show();
            }
            else
            {
                fMain.Close();
            }
        }
    }
}

這裡實現了一個登入視窗的創意,在app.xaml中指定了Startup屬性(不是StartupUri)也就表明了在Application物件例項化之後,會呼叫Application_Startup方法進行進一步處理。

相關推薦

WPF簡單教程Application的使用

Application類是WPF型別中的一個基礎,是每一個WPF必有的部分。 Application類在應用程式中所處的位置 WPF應用程式中,Application類例項是應用程式例項的代表,每個WPF應用程式中都存在一個Application

一分鐘教你簡單教程AutoCAD怎麼繪製紅綠燈?

關於AutoCAD的話,我們也都應該很熟悉了,隨著CAD的應用的範圍的推廣,對於設計的我們看來說,相關的CAD繪圖輔助軟體確實幫我們節省了不少的時間,大大的提高了我們的工作效率,那麼關於CAD繪圖,你有了解多少?那就舉一個最簡單的生活案例吧,CAD怎麼繪製紅綠燈?CAD中想要畫一個紅綠燈,該

Matlab簡單教程迴圈

迴圈輸出變數 for i=1:4 i end 其中1:4代表一個行向量1 2 3 4,在matlab中,行向量的另外一個表示方法是[1 2 3 4],即for i=1:4等價於for i=[1 2 3 4],編寫程式時牢記一個點:對於某次固定的迭

MPAndroidChart 教程ChartData,ChartData子, DataSet,DataSet子(十二)

一、ChartData 類 為了讓大家更容易理解,這裡先簡單介紹下 MPAndroidChart 的資料模型 ChartData 。後面有文章再詳細介紹該圖示庫的其它資料型別。 ChartData 類是所有資料類的基類,比如 LineData,BarDa

史上最簡單教程向第三方jar包注入自己的程式碼

注意:全文極短,適用於各種反編譯小白,程式小白,讀完僅需2分鐘! 我們經常使用第三方庫,但當我們遇到一些個性化需求,第三方庫沒有預留介面的時候,怎麼辦? 比如我們專案中用到友盟的社會化分享元件,但是友盟的分享對話方塊實在是醜!而他們又沒有留下足夠的介面支援我

Matlab簡單教程函式

無引數,無返回值 function run() for i=1:10 disp(i); end end 有引數 function run(from,to) for i=f

android application簡單介紹(一)

cati theme text color raw sdn water bsp public 每次應用程序執行時。應用程序的application類保持實例化的狀態。通過擴展applicaiton類,能夠完畢下面3項工作: 1.對android執行時廣播的應用程序

Wpf Application的任務:

rtu 操作 strong start end 命名 esp title exc 首先Application能夠實現幾種功能,比如訪問命令行參數,獲取當前程序類的實例,以及常見的單窗口程序實例. 訪問命令行參數: 第一種: 獲取獲取方式使用Environment.G

博客園WPF Application

pro dialog 通過 關閉 com mouse 總結 4.5 init 所有的WPF程序,都是由Application類實例創建,該類負責打開當前應用程序和窗體,並且決定如何關閉應用程序等。Application類的主要功能可以簡單總結以下幾點: 1、保持主線程 使用

eclipse 運行錯誤XXX中找不到 main 方法, 請將 main 方法定義為: public static void main(String[] args) 否則 JavaFX 應用程序必須擴展javafx.application.Application

分享圖片 java stat 報錯 es2017 pub .... img nbsp 新建了一個類Hello: 代碼: 第一次運行報錯: 點擊關閉該類的界面時出現: 點擊是,然後再次打開,可以正確執行,結果為: 這是為什麽.... ec

Android全面解析 熟悉而陌生 的Application使用

screen 存儲 程序啟動 兩個 com 完全 @override mat 例子 前言 Applicaiton類在 Android開發中非常常見,可是你真的了解Applicaiton類嗎? 本文將全面解析Applicaiton類,包括特點、方法介紹、應用場景和具體使用,

簡單的一個MySQL的實現

ges 方法 自動 分享圖片 == PE 生成 bubuko 隨機 ‘‘‘定義MySQL類:1.對象有id、host、port三個屬性2.定義工具create_id,在實例化時為每個對象隨機生成id,保證id唯一3.提供兩種實例化方式,方式一:用戶傳入host和port 方

完整的最簡單的譜聚python代碼

得到 for details -c 簡單的 enum off ads odin http://blog.csdn.net/waleking/article/details/7584084 針對karate_club數據集,做了譜聚類。由於是2-way clusterin

WPF中的Application

顯示 背景圖片 之前 border cee spa gif from clas 原文:WPF中的Application類。Application對象用的名稱空間是system.windows 1、手動創建Application對象步驟。 1.1)、把項目中的App.Xa

Python入門學習1.變量和簡單的數據

import word python使用 com 其中 小數位 小數 ring 很多 python入門學習:1.變量和簡單的數據類型 關鍵點:變量、字符串、數字 1.1 變量的命名和使用1.2 字符串1.3 數字1.4 註釋 1.1 變量的命名和使用 ??變量,顧名思

簡單的Docker映象教程從頭基於空映象scratch建立一個新的Docker映象

我們在使用Dockerfile構建docker映象時,一種方式是使用官方預先配置好的容器映象。優點是我們不用從頭開始構建,節省了很多工作量,但付出的代價是需要下載很大的映象包。 比如我機器上docker images返回的這些基於nginx的映象,每個都超過了100MB,而一個簡單的

Android進階(三)Application啟動過程(最詳細&最簡單)

1.前言 最近一直在看 《Android進階解密》 的一本書,這本書編寫邏輯、流程都非常好,而且很容易看懂,非常推薦大家去看看(沒有收廣告費,單純覺得作者寫的很好)。 上一篇簡單的介紹了Android進階(二): 應用程序啟動過程,最終知道了ActivityThrea

簡單教程在Ubuntu作業系統裡安裝Docker

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。 今天這篇文章咱們就來將Docker安裝到Ubuntu

常用程式碼整理Application、Activity 基

說明:大部分內容都是參考別的文章,這裡做整理是為了以後的程式設計有實用的模板,可以即需即用。 一、MyApplication import android.app.Application; public class MyApplication extends

屬性動畫ValueAnimator和ObjectAnimator簡單使用

ValueAnimator類:  ValueAnimator anim = ValueAnimator.ofInt(0, 3); // ofInt()作用有兩個 // 1. 建立動畫例項 // 2. 將傳入的多個Int引數進行