WPF入门之Application属性方法
来源:互联网 发布:github ignore java 编辑:程序博客网 时间:2024/05/22 06:06
转自:http://www.cnblogs.com/chillsrc/p/4475882.html
三、WPF应用程序的关闭
WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序才停止运行。 ShutDown 是隐式或显式发生,可以通过指定 ShutdownMode 的属性值来进行设置。
ShutdownMode选项
OnLastWindowClose(默认值):
应用程序关闭时,或最后一个窗口关闭时关闭,或调用Application对象的Shutdown() 方法时,应用程序关闭。
OnMainWindowClose
启动窗体关闭或调用Application对象的Shutdown()方法时,应用程序关闭。(和C#的Windows应用程序的关闭模式比较类似)
OnExplicitShutdown
只有在调用Application对象的Shutdown()方法时,应用程序才会关闭。
- 对ShutdownMode选项的更改,可以直接在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" StartupUri="MainWindow.xaml" ShutdownMode="OnExplicitShutdown" > <Application.Resources> </Application.Resources></Application>
2. 在代码文件(App.xaml.cs)中修改ShutdownMode选项,但必须注意这个设置要写在app.Run()方法之前 ,如下代码。
app.ShutdownMode = ShutdownMode.OnExplicitShutdown; app.Run(win);
Application对象的其他属性:
名称
说明
Current
获取当前 AppDomain的 Application 对象。
Dispatcher
获取与此 DispatcherObject 关联的 Dispatcher。 (继承自 DispatcherObject。)
MainWindow
获取或设置应用程序的主窗口。
Properties
获取应用程序范围的属性集合。
ResourceAssembly
获取或设置对于 WPF 应用程序的资源提供已装箱统一资源标识符 (URI) 的 Assembly 。
Resources
获取或设置应用程序范围资源的集合,例如样式和画笔。
ShutdownMode
获取或设置会导致 Shutdown 方法调用的情况。
StartupUri
获取或设置自动显示的 UI ,当应用程序启动时。
Windows
获取在应用程序中实例化窗口。
四、添加Application对象事件
名称
说明
Activated
当应用程序成为前台应用程序时触发。
Deactivated
当应用程序不再是前台应用程序时触发。
DispatcherUnhandledException
如果异常是由应用程序引发,但未处理,触发。
Exit
在应用程序关闭之前,触发,而且不能撤消。
FragmentNavigation
发生在应用程序的一个浏览器启动导航到内容片段导航时,会立即发生,如果所需片段在当前目录,或者,在源 XAML 目录加载后,如果所需片段在其他内容。
LoadCompleted
在导航到在应用程序中的一个浏览器的目录加载的分析完成并已呈现时触发。
Navigated
当导航到在应用程序中使用的浏览器已找到的内容时触发,这时它可能还没有完成加载。
Navigating
在一个新的导航由应用程序,一个浏览器请求发生。
NavigationFailed
出现问题,则错误,当应用程序的一个浏览器导航到所请求的内容时。
NavigationProgress
定期发生在应用程序中使用浏览器管理提供导航进度信息的下载过程。
NavigationStopped
发生在一个浏览器的 StopLoading 方法在应用程序的调用,或者,如果新的导航由浏览器请求,在当前导航正在进行的。
SessionEnding
当用户在注销或关闭操作系统关闭 Windows 会话时发生。
Startup
当 Application 对象的 Run 方法调用,发生。
在应用程序中添加事件的方式有如下三种。
第一种方式:
1、在App.xaml中做事件的绑定,在App.xaml.cs文件中添加事件的处理方法
在App.xaml文件中,具体添加方法见下图。
2、添加完事件之后的app.xml文件代码如下
<Application x:Class="WpfApp1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml" ShutdownMode="OnExplicitShutdown" Activated="Application_Activated" Exit="Application_Exit"> <Application.Resources> </Application.Resources></Application>
3、在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 WpfApp1{ /// <summary> /// App.xaml 的交互逻辑 /// </summary> public partial class App : Application { private void Application_Activated(object sender, EventArgs e) { } private void Application_Exit(object sender, ExitEventArgs e) { } }}
4.在使用以上方式添加事件之后,如果在Visual Studio中按F5 执行应用程序时,报以下错误“不包含适合于入口点的静态‘Main’方法”。这个错误是由于Visual Studio把项目文件(*.csproj)中原来自动生成的app.xaml相关的定义进行了修改。具体区别如下:
1) 直接新建的WPF项目中的有关App.xaml的定义如下:
<ApplicationDefinition Include="App.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </ApplicationDefinition>
2) Visual Studio把修改后的App.xaml的配置代码如下:
<Page Include="App.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page>
第一段代码中App.xaml在项目文件里面用ApplicationDefinition标签定义。第二段代码中App.xaml在项目文件里面用Page标签定义,这种定义是指App.xaml只是一个页面而已。
因此,只需要把项目文件中将App.xaml的配置由Page修改成ApplicationDefinition即可。
第二种方式
1、可以像是在WinForm中的Program类中写Main方法一样,在WPF中一样可以自定义一个app类中写main及其他相关事件。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows; namespace WpfApp1{ class App { [STAThread] static void Main() { // 定义Application对象作为整个应用程序入口 Application app = new Application(); MainWindow win = new MainWindow(); app.ShutdownMode = ShutdownMode.OnMainWindowClose; app.MainWindow = win; //是必须的,否则无法显示窗体 win.Show(); app.Run(); app.Activated += app_Activated; app.Exit += app_Exit; } static void app_Activated(object sender, EventArgs e) { throw new NotImplementedException(); } static void app_Exit(object sender, ExitEventArgs e) { throw new NotImplementedException(); } }}
第三种方式
- 在App.xaml界面中,如下图位置1处,输入Exit事件名称,Visual Studio 2013会弹出一个菜单“新建事件处理程序”,双击这个菜单,Visual Studio 2013就会自动创建一个“Application_Exit”事件,如下图位置2处。
五、WPF应用程序生存周期
WPF应用程序的生命周期与执行顺序,用MSDN上的一张图片进行说明。下图显示了窗口的生存期中的主体事件的顺序。
- WPF入门之Application属性方法
- WPF入门之Application启动方式
- WPF入门之hello WPF!
- WPF之依赖属性
- Application之 属性
- Application之属性restoreAnyVersion
- Application之属性debuggable
- WPF之windows.CommandBinding属性
- WPF之TextBox相关属性
- WPF之Treeview相关属性
- [WPF基础入门][5]__属性系统
- WPF入门之XAML初窥
- WPF学习之入门篇
- Excel VBA 入门(1) - Application常用属性
- WPF之CLR属性、依赖属性、附加属性
- Application对象的特性、属性和方法
- 获取application.yml中的属性的方法
- WPF学习之深入浅出话属性
- Udacity Deep Learning课程作业(四)
- web15天cookie和session的使用
- Mac 下自定义命令
- 工厂模式
- Sightseeing tour POJ
- WPF入门之Application属性方法
- python实现2种简单的排序算法--冒泡排序和选择排序
- poj-1681-Painter's Problem
- 解决散列表冲突问题-分离链接散列表
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
- 三菱伺服电机的定位启动及busy等信号的时序图
- java语言基础(84)——打印流
- (转)Python使用struct处理二进制
- JS DOM