WPF基础——ApplicationWPF基础——Application

使用App.xaml文件定义启动应用程序,使用App.xaml文件定义启动应用程序

一、Application介绍

一、Application介绍

WPF中的Application对象用来拓展一些大局的行为以及操作,并且每个 Domain (应用程序域)中不过且仅来一个 Application 实例存在。WPF Application默认由片有的组成 : App.xaml 和 App.xaml.cs,这有接触类似于 Asp.Net WebForm,将定义跟作为代码相分离。

WPF中的Application对象用来拓展有大局的表现跟操作,并且每个 Domain (应用程序域)中仅且只有来一个 Application 实例存在。WPF Application默认由片局部组成 : App.xaml 和 App.xaml.cs,这生接触类似于 Asp.Net WebForm,将定义及行为代码相分离。

微软把WPF中不时以的效应都封闭装在 Application 类中了。 Application 类具体有以下职能: 

微软将WPF中时常应用的效用还封闭装在 Application 类中了。 Application 类具体有以下功能: 

  • 跟踪应用程序的生存期并同之相。 
  • 摸索和拍卖命令执行参数。 
  • 检测与响应未经处理的百般。 
  • 共享应用程序范围之性质和资源。 
  • 治本独立应用程序中之窗口。 
  • 跟踪以及保管导航。 
  • 跟应用程序的生存期并同的相。 
  • 摸和处理命令执行参数。 
  • 检测和响应未经处理的挺。 
  • 共享应用程序范围的特性和资源。 
  • 治本独立应用程序中的窗口。 
  • 跟踪以及管理导航。 

二、Applicaion应用

二、Applicaion应用

1、在Visual Studio 2015遭到创造一个“WPF应用程序”,使用App.xaml文件定义启动应用程序。

1、在Visual Studio 2015受到开创一个“WPF应用程序”,使用App.xaml文件定义启动应用程序。

种类受到的每个WPF窗口(xaml),包含2只文本:xaml和xaml.cs

项目蒙之每个WPF窗口(xaml),包含2单文本:xaml和xaml.cs

图片 1

图片 2

色文件(WpfApplication.csproj)中来照应之描述节点:<Page>和<Compile>,而<ApplicationDefinition>节点有的言语只能发出一个,用来定义启动项。

种类文件(WpfApplication.csproj)中生照应之叙说节点:<Page>和<Compile>,而<ApplicationDefinition>节点有的言语只能发出一个,用来定义启动项。

  <ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </ApplicationDefinition>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <Page Include="MainWindow.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Compile Include="MainWindow.xaml.cs">
      <DependentUpon>MainWindow.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </ApplicationDefinition>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <Page Include="MainWindow.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Compile Include="MainWindow.xaml.cs">
      <DependentUpon>MainWindow.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
  </ItemGroup>

2、也可以好定义一个Main方法来落实WPF应用程序的启航。

2、也足以协调定义一个Main方法来实现WPF应用程序的启动。

先是步:在“解决方案资源管理器”中选中App.xaml文件,右键“从品种被祛”。

先是步:在“解决方案资源管理器”中选中App.xaml文件,右键“从类型遭到排除”。

这,Visual Studio自动会改变WPF项目文件(WpfApplication.csproj),去丢了<ItemGroup>中之<ApplicationDefinition>节点和<Compile>节点

这时,Visual Studio自动会改变WPF项目文件(WpfApplication.csproj),去丢了<ItemGroup>中之<ApplicationDefinition>节点和<Compile>节点

<ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </ApplicationDefinition>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
</ItemGroup>
<ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </ApplicationDefinition>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
</ItemGroup>

只要后又如果用App.xaml文件“包括在类型受到”来当WPF应用启动,F5周转时会报错误“不含有适合为入口点的静态‘Main’方法”。这个荒唐是由Visual
Studio把种文件(*.csproj)中原自动生成的app.xaml相关的概念进行了改(上面就说明)。

若是后又如用App.xaml文件“包括在类型受到”来作为WPF应用启动,F5周转时会见报错误“不包含适合给入口点的静态‘Main’方法”。这个荒唐是由Visual
Studio把种文件(*.csproj)中原来自动生成的app.xaml相关的概念进行了改动(上面就说明)。

添加App.xaml进来后,项目文件(*.csproj)自动会转变如下代码:

添加App.xaml进来后,项目文件(*.csproj)自动会变卦如下代码:

  <ItemGroup>
    <Page Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <Page Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
    </Compile>
  </ItemGroup>

第一段落代码中App.xaml在档次文件之中用ApplicationDefinition标签定义。第二截代码中App.xaml在类型文件中用Page标签定义,这种概念是指App.xaml只是一个页面而已。因此,只待把路文件中将App.xaml的安排由Page修改成ApplicationDefinition即可。

先是段子代码中App.xaml在项目文件之中用ApplicationDefinition标签定义。第二截代码中App.xaml在列文件里用Page标签定义,这种概念是指App.xaml只是一个页面而已。因此,只待拿项目文件中将App.xaml的部署由Page修改成ApplicationDefinition即可。

次步:现在中添加一个新类,类名为App.cs。

亚步:现在中添加一个新类,类名为App.cs。

可形容副以下三种植艺术启动WPF。 

可以写副以下三栽方法启动WPF。 

    class App
    {
        [STAThread]
        static void Main()
        {
            f1();
        }
        static void f1()
        {
            // 定义Application对象作为整个应用程序入口
            Application app = new Application();
            MainWindow win = new MainWindow();
            //ShutdownMode选项,注意这个设置必须要写在app.Run()方法之前
            app.ShutdownMode = ShutdownMode.OnMainWindowClose; //非必须
            //调用Run方法
            app.Run(win);
        }
        static void f2()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            MainWindow win = new MainWindow();
            //是必须的,否则无法显示窗体  
            win.Show();
            //指定Application对象的MainWindow属性为启动窗体,然后调用无参数的Run方法  
            app.MainWindow = win;
            app.Run();
        }
        static void f3()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            // 通过Url的方式启动
            app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
            app.Run();
        }
    }
    class App
    {
        [STAThread]
        static void Main()
        {
            f1();
        }
        static void f1()
        {
            // 定义Application对象作为整个应用程序入口
            Application app = new Application();
            MainWindow win = new MainWindow();
            //ShutdownMode选项,注意这个设置必须要写在app.Run()方法之前
            app.ShutdownMode = ShutdownMode.OnMainWindowClose; //非必须
            //调用Run方法
            app.Run(win);
        }
        static void f2()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            MainWindow win = new MainWindow();
            //是必须的,否则无法显示窗体  
            win.Show();
            //指定Application对象的MainWindow属性为启动窗体,然后调用无参数的Run方法  
            app.MainWindow = win;
            app.Run();
        }
        static void f3()
        {
            // 定义Application对象作为整个应用程序入口  
            Application app = new Application();
            // 通过Url的方式启动
            app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
            app.Run();
        }
    }

其三、WPF应用程序的关门

老三、WPF应用程序的关

WPF应用程序的倒闭只有在应用程序的 Shutdown
方法让调用时,应用程序才止住运作。 ShutDown
是隐式或显式发生,可以透过点名 ShutdownMode 的属性值来拓展安装。

WPF应用程序的关闭只有在应用程序的 Shutdown
方法为调用时,应用程序才停止运作。 ShutDown
是隐式或显式发生,可以由此点名 ShutdownMode 的属性值来进行安装。

方法一样:如上面写以代码里

办法相同:如上面写于代码里

方式二:写在App.xaml里

方式二:写在App.xaml里

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

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

    </Application.Resources>
</Application>

季、Application对象事件

季、Application对象事件

1、第一种办法,在App.xaml文件添加事件,如Activated事件(当应用程序成为前台应用程序时触发)

1、第一栽方法,在App.xaml文件添加事件,如Activated事件(当应用程序成为前台应用程序时触发)

此方式也可以在Visual Studio(ide)中之App.xaml属性窗口(按F4)中设置。

其一道吧得以Visual Studio(ide)中的App.xaml属性窗口(按F4)中装置。

<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication1"
             StartupUri="MainWindow.xaml" ShutdownMode="OnExplicitShutdown" Activated="Application_Activated">
    <Application.Resources>

    </Application.Resources>
</Application>
<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication1"
             StartupUri="MainWindow.xaml" ShutdownMode="OnExplicitShutdown" Activated="Application_Activated">
    <Application.Resources>

    </Application.Resources>
</Application>

每当App.xaml.cs文件的代码如下:

于App.xaml.cs文件之代码如下:

namespace WpfApplication1
{
    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        private void Application_Activated(object sender, EventArgs e)
        {

        }
    }
}
namespace WpfApplication1
{
    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        private void Application_Activated(object sender, EventArgs e)
        {

        }
    }
}

2、第二种植办法,定义一个App类写Main方法及外事件相当。

2、第二栽方法,定义一个App类写Main方法与其他事件等。

namespace WpfApplication1
{
    class App
    {
        [STAThread]
        static void Main()
        {
            f1();
        }
        static void f1()
        {
            // 定义Application对象作为整个应用程序入口
            Application app = new Application();
            MainWindow win = new MainWindow();
            //ShutdownMode选项,注意这个设置必须要写在app.Run()方法之前
            app.ShutdownMode = ShutdownMode.OnMainWindowClose;
            //调用Run方法
            app.Run(win);
            app.Activated += App_Activated;
        }
        static void App_Activated(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }
    }
}
namespace WpfApplication1
{
    class App
    {
        [STAThread]
        static void Main()
        {
            f1();
        }
        static void f1()
        {
            // 定义Application对象作为整个应用程序入口
            Application app = new Application();
            MainWindow win = new MainWindow();
            //ShutdownMode选项,注意这个设置必须要写在app.Run()方法之前
            app.ShutdownMode = ShutdownMode.OnMainWindowClose;
            //调用Run方法
            app.Run(win);
            app.Activated += App_Activated;
        }
        static void App_Activated(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }
    }
}

五、WPF应用程序生存周期

五、WPF应用程序生存周期

WPF应用程序的生命周期与履行各个,用MSDN上之一模一样摆设图进行求证。

WPF应用程序的生命周期与实践顺序,用MSDN上的相同摆放图展开说明。

图片 3

图片 4

Continue…

Continue…