iblog 5

苹果有iphone,我有iblog

导航

WPF中的Application

Posted on 2012-06-13 12:43  cbtech  阅读(303)  评论(0编辑  收藏  举报

一、介绍

WPF和 传统的WinForm 类似, WPF 同样需要一个 Application 来统领一些全局的行为和操作,并且每个 Domain (应用程序域)中只能有一个 Application 实例存在。和 WinForm 不同的是 WPF Application 默认由两部分组成 : App.xaml 和 App.xaml.cs,将定义和行为代码相分离。当然,这个和WebForm 也比较类似。XAML 从严格意义上说并不是一个纯粹的 XML 格式文件,它更像是一种 DSL(Domain Specific Language,领域特定语言),它的所有定义都直接映射成某些代码,只是具体的翻译工作交给了编译器完成而已。WPF应用程序由 System.Windows.Application类来进行管理。

 

 

二、自已定义类用Main方法实现对WPF应用程序的启动

    在项目中添加一个类,类的代码如下,在项目选项中,设定此类为启动项。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;

namespace WPFApplications
{
public partial class App : Application
    {
        [STAThread]
        static void Main()
        {
          定义Application对象作为整个应用程序入口  
            Application app = new Application();
            // 方法一:调用Run方法,参数为启动的窗体对象 ,也是最常用的方法 
              Window2 win = new Window2();
            app.Run(win);

            // 方法二:指定Application对象的MainWindow属性为启动窗体,然后调用无参数的Run方法  
              Window2 win = new Window2();  
            app.MainWindow = win; 
            win.Show();       
              app.Run();  

            方法三:通过Url的方式启动
              app.StartupUri = new Uri("Window2.xaml", UriKind.Relative); 
            app.Run();
        }
    }
}

 

三、Application应用程序关闭
   
OnLastWindowClose(默认值): 最后一个窗体关闭或调用Application对象的Shutdown() 方法时,应用程序关闭。
OnMainWindowClose 启动窗体关闭或调用Application对象的Shutdown()方法时,应用程序关 闭。(和C#的Windows应用程序的关闭模式比较类似)
OnExplicitShutdown 只有在调用Application对象的Shutdown()方法时,应用程序才会关闭。

  对关闭选项更改的时候,可以直接在App.xaml中更改:

<Application x:Class="WPFApplications.App"    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    StartupUri="Window2.xaml"    ShutdownMode="OnExplicitShutdown">    <Application.Resources>    </Application.Resources></Application>  

 

 同样你也可以在代码文件(App.xaml.cs)中进行更改,但必须注意这个设置写在app.Run()方法之前 ,如下代码:
app.ShutdownMode = ShutdownMode.OnExplicitShutdown;
app.Run(win);

 

原文链接:http://www.evget.com/zh-CN/Info/catalog/14973.html