【WPF系列】- Application详解

简介: 笔记

一、Application简介


WPF和WinForm很相似,WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只有一个 Application 实例存在。和 WinForm 不同的是WPF Application默认由两部分组成 : App.xaml 和 App.xaml.cs,这有点类似于 Asp.Net WebForm,将定义和行为代码相分离。


Application 类具体有以下功能:

1.跟踪应用程序的生存期并与之交互。

2.检索和处理命令行参数。

3.检测和响应未经处理的异常。

4.共享应用程序范围的属性和资源。

5.管理独立应用程序中的窗口。

6.跟踪和管理导航。


二、初始App.xaml


使用Visual Studio创建一个WPF应用程序,使用App.xaml文件启动应用程序。XAML并不是严格的XML格式的文件,它是一种DSL语言,它所有的定义都会由编译器最后编译成代码。


App.xaml文件

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

App.xaml.cs文件

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace _010_WPF_Demo
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
    }
}


App类继承Application。Application实现单一实例模式,以提供对窗口,属性和资源范围服务的共享访问。因此,每个AppDomain只能创建一个Application实例。


也可以使用标记、标记和代码隐藏或代码实现Application。如使用Application标记实现,则必须将标记文件配置为MICROSOFT生成引擎(MSBuild)ApplicationDefinition项。


独立应用程序不需要 Application 对象;可以在不创建 实例Application的情况下 (Main) 实现自定义static入口点方法以打开窗口。


二、自定义Main方法启动WPF应用程序


首先在项目中排除App.xaml文件。操作步骤:鼠标右键,弹出“弹出菜单 -> 从项目中排除,然后创建启动文件App.cs,并在App.cs类中添加Main方法


▪第一种:启动应用程序的代码

[STAThread]
private static void Main()
{
     Application app = new Application();
     MainWindow main=new MainWindow();
     app.Run(main);
}

▪第二种:启动应用程序的代码

[STAThread]
private static void Main()
{
     Application app = new Application();
     MainWindow main=new MainWindow();
     app.MainWindow= main;
     main.ShowDialog();
     app.Run();
}

▪第三种:启动应用程序的代码

[STAThread]
private static void Main()
{
      Application app = new Application();
      app.StartupUri = new Uri("MainWindow.xaml", UriKind.Relative);
      app.Run();
}

以上三种方法都可以使用代码启动一个WPF应用程序。


三、Application属性


5.png

四、Application方法


6.png7.png8.png

五、Application事件


10.png


10.png10.png

六、Application总结


Application是封装WPF应用程序特定功能的类,实现单一实例模式,以提高对其窗口,属性和资源范围服务的共享访问,因此,每个WPF的AppDomain只是创建类的Application一个实例。Application可以通过使用标记、标记和代码隐藏或代码实现Application。

目录
相关文章
|
C#
WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)
原文:WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)      在上一篇中我们完成了快捷工具栏的开发,本篇将讲解应用程序菜单开发的相关内容。如下图所示,点击程序窗口左上角的记事本图标(Application Button)会显示出应用程序菜单(Application Menu)列表,列表中的按键即为软件的一些基本功能。
2234 0
|
C# 前端开发 Windows
WPF中的Application类。
原文:WPF中的Application类。 Application对象用的名称空间是system.windows 1、手动创建Application对象步骤。 1.1)、把项目中的App.Xaml文件从项目中排除。
1293 0
|
C#
WPF整理-Mutex确保Application单例运行
原文:WPF整理-Mutex确保Application单例运行 有时我们不希望我们的WPF应用程序可以同时运行有多个实例,当我们试图运行第二个实例的时候,已经运行的实例也应该弹出来。 我们可以用Mutex来实现 打开App.
1371 0
|
C#
Merging a WPF application into a single EXE(WPF应用程序合并成单个Exe文件)
I always dislike handing off little applications to people. Not because I can’t, but because of the steps involved to make sure it all just works.
1075 0
|
C# Windows
WPF Application 类介绍以及怎样修改启动方式
    因为想要修改wpf的启动方式,所以研究了下Application类,现把一些有用的属性与大家分享下: 属性:     Current                  获取当前 AppDomain的 Application 对象     MainWindow           获取或设置应用程序的主窗体。
860 0
|
7月前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库
401 0
|
7月前
|
C#
浅谈WPF之装饰器实现控件锚点
使用过visio的都知道,在绘制流程图时,当选择或鼠标移动到控件时,都会在控件的四周出现锚点,以便于修改大小,移动位置,或连接线等,那此功能是如何实现的呢?在WPF开发中,想要在控件四周实现锚点,可以通过装饰器来实现,今天通过一个简单的小例子,简述如何在WPF开发中,应用装饰器,仅供学习分享使用,如有不足之处,还请指正。
154 1
|
4月前
|
开发框架 缓存 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件