WPF基础——Application

日期:2019-12-17编辑作者:新金沙国际手机版

一、Application介绍

WPF中的Application对象用来进展局地大局的行事和操作,并且每一个 Domain (应用程序域)中仅且只有二个 Application 实例存在。WPF Application默许由两某个组成 : App.xaml 和 App.xaml.cs,那有一点点相同于 Asp.Net WebForm,将概念和作为代码相分离。

WPF基础——Application。微软把WPF中平时应用的效率都封装在 Application 类中了。 Application 类具体有以下作用: 

  • WPF基础——Application。钉住应用程序的生存期并与之相互。 
  • 搜索和拍卖命令行参数。 
  • 检查评定和响应未经处理的不行。 
  • WPF基础——Application。分享应用程序范围的性质和财富。 
  • 管理独立应用程序中的窗口。 
  • 跟踪和管理导航。 

二、Applicaion应用

1、在Visual Studio 贰零壹陆中开创贰个“WPF应用程序”,使用App.xaml文件定义运营应用程序。

品类中的每一种WPF窗口(xaml卡塔尔,包涵2个文件:xaml和xaml.cs

图片 1

花色文件(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>

2、也得以团结定义三个Main方法来落到实处WPF应用程序的开发银行。

率先步:在“设计方案能源微处理机”中选中App.xaml文件,右键“从类型中消亡”。

当时,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>

若后边又要将App.xaml文件“富含在类型中”来作为WPF应用运行,F5运作时会报错误“不分包相符于入口点的静态‘Main’方法”。这么些错误是由于Visual Studio把项目文件(*.csproj卡塔尔(قطر‎中原来自动生成的app.xaml相关的定义实行了修正(上边已表达卡塔尔(قطر‎。

增加App.xaml进来后,项目文件(*.csproj卡塔尔(英语:State of Qatar)自动会生成如下代码:

  <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.cs。

能够写入以下二种格局运营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();
        }
    }

三、WPF应用程序的闭馆

WPF应用程序的关门只有在应用程序的 Shutdown 方法被调用时,应用程序才告蓬蓬勃勃段落运维。 ShutDown 是隐式或显式发生,可以经过点名 ShutdownMode 的属性值来开展设置。

主意豆蔻梢头:如上面写在代码里

方式二:写在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对象事件

1、第生龙活虎种方法,在App.xaml文件加多事件,如Activated事件(当应用程序成为前台应用程序时接触)

此办法也足以在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>

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

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

        }
    }
}

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();
        }
    }
}

五、WPF应用程序生存周期

WPF应用程序的生命周期与执行各种,用MSDN上的一张图片张开认证。

图片 2

Continue...

本文由新金沙国际手机版发布于新金沙国际手机版,转载请注明出处:WPF基础——Application

关键词:

新金沙国际手机版git 本地分支与远程分支 新建

github寒食经有master分支 和dev分支 在本地 git checkout -b dev 新建并切换来本地dev分支 git pull origin dev 本地分支与长途分支...

详细>>

和贯科技亮相2017重庆智慧教育及装备展览会

by和贯科学和技术 和贯科学技术携新型最完美最具科技(science and technology卡塔尔国的 《智慧教育条件实施方案》 展布...

详细>>

想了解经济学?推荐你这一本

想了解经济学?推荐你这一本。之前,我只是听老师上课总提到张五常,知道他很厉害,但知之甚微。网上说《新卖...

详细>>

【译】MSB8027: Two or more files with the name of ***.cpp

【译】MSB8027: Two or more files with the name of ***.cpp will produce outputs to the same location.。原文链接: 【译】MSB8027: Two or more...

详细>>