WPF应用程序生存期以及相关事件

这篇具有很好参考价值的文章主要介绍了WPF应用程序生存期以及相关事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  •  WPF 应用程序的生存期会通过 Application 引发的几个事件来加以标记,相关事件对应着应用程序何时启动、激活、停用和关闭。

应用程序生存期事件

  • • 独立应用程序(传统风格的 Windows 应用程序,这些应用程序作为要安装到客户端计算机并从客户端计算机运行的可执行程序集来生成)和 XAML 浏览器应用程序 (XBAP)(由导航页组成的应用程序,这些应用程序作为可执行程序集生成并由Web 浏览器托管) 的生存期并非完全相同。

  • • 下图展示了独立应用程序生存期内的各个关键事件及其引发顺序。

WPF应用程序生存期以及相关事件,WPF,wpf,WPF事件处理,WPF相关事件,WPF事件总结 

 同样的,下图展示了 XAML 浏览器应用程序 (XBAP)生存期内的各个关键事件及其引发顺序。

 WPF应用程序生存期以及相关事件,WPF,wpf,WPF事件处理,WPF相关事件,WPF事件总结

创建WPF应用程序并验证生存期相关事件

  • • 在app.xmal中绑定相关事件以及启动设置Shutdown返回代码模式

 

// app.xanl 文件
// 绑定相关事件
<Application x:Class="WpfFirstApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfFirstApp"
             StartupUri="MainWindow.xaml"
             Startup="Application_Startup"
             Activated="Application_Activated"
             Deactivated="Application_Deactivated"
             DispatcherUnhandledException="App_DispatcherUnhandledException"
             Exit="Application_Exit"
             ShutdownMode="OnMainWindowClose">
    <Application.Resources>
         
    </Application.Resources>
</Application>
// App.xaml.cs 相关代码
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Windows;
using System.Windows.Threading;

namespace WpfFirstApp
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        /// <summary>
        /// 启动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            Debug.WriteLine("应用启动了:Startup");

            //this.ShutdownMode = ShutdownMode.OnMainWindowClose;
        }

        /// <summary>
        /// 获得焦点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Application_Activated(object sender, EventArgs e)
        {
            Debug.WriteLine("应用获得焦点了:Activated");
        }

        /// <summary>
        /// 失去焦点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Application_Deactivated(object sender, EventArgs e)
        {
            Debug.WriteLine("应用失去焦点了:Deactivated");
        }

        /// <summary>
        /// 异常
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            Debug.WriteLine("应用出现未处理的异常:DispatcherUnhandledException");

            //设置为已处理了异常
            e.Handled = true;
        }

        /// <summary>
        /// 退出
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Application_Exit(object sender, ExitEventArgs e)
        {
            Debug.WriteLine("程序关闭退出了:Exit");
        }
    }
}
//MainWindow.xaml.cs 相关代码
// 按钮里模拟相关处理
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfFirstApp
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Dispatcher.Invoke(() =>
            {
                throw new Exception("模拟异常");
                //throw new InvalidOperationException("模拟异常");
            });
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Dispatcher.Invoke(() =>
            {
                Application.Current.Shutdown(9999);
            });
        }
    }
}

 

WPF应用程序生存期以及相关事件,WPF,wpf,WPF事件处理,WPF相关事件,WPF事件总结文章来源地址https://www.toymoban.com/news/detail-808635.html

到了这里,关于WPF应用程序生存期以及相关事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何为WPF应用程序制作一个虚拟键盘?这里有答案(Part 1)

    Telerik UI for WPF拥有超过100个控件来创建美观、高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序。UI for WPF支持MVVM、触摸等,创建的应用程序可靠且结构良好,非常容易维护,其直观的API将无缝地集成Visual Studio工具箱中。 点击获取Telerik UI for WPF最新版下载 T

    2024年02月09日
    浏览(94)
  • 【自动化】在WPF应用程序中使用MVVM框架实现Modbus协议通信

    Modbus是一种广泛应用于工业领域的通信协议,主要用于设备间的数据交换。在WPF应用程序中,我们可以使用MVVM(Model-View-ViewModel)框架来实现Modbus协议的通信。本文将详细介绍如何实现这一功能。 为了在WPF应用程序中实现Modbus协议通信,我们需要安装一些第三方库。可以使用

    2024年03月22日
    浏览(48)
  • C# WPF应用使用visual studio的安装程序类的一些坑

    否则会出现命名空间System.Configuration不存在Install的报错   var s = Context.Parameters[\\\"assemblypath\\\"].ToString() 这个里面是当前文件的路径,所以需要删除掉文件的名字才能获取目录路径 var dir = s.Substring(0, s.LastIndexOf(\\\"\\\\\\\") + 1)

    2024年02月12日
    浏览(40)
  • 虚拟桌宠模拟器:VPet-Simulator,一个开源的桌宠软件, 可以内置到任何WPF应用程序

    虚拟桌宠模拟器 一个开源的桌宠软件, 可以内置到任何WPF应用程序 获取虚拟桌宠模拟器 OnSteam(免费) 或 通过[Nuget]内置到你的WPF应用程序 虚拟桌宠模拟器是一款桌宠软件,支持各种互动投喂等. 开源免费并且支持创意工坊. 反正免费为啥不试试呢( 该游戏为 [虚拟主播模拟器] 内

    2024年02月08日
    浏览(42)
  • 关于WPF中Command绑定传参数以及将命令绑定到其它事件的方法

    前言:在WPF中,将命令绑定到一个Button的Command属性中是非常简单的事情,例如: 但是很多时候,我们要实现其它事件的命令绑定,以此实现彻底的MVVM开发模式,那就得用到微软另外一个神器了!它就是程序集System.Windows.Interactivity,在网上可以下载System.Windows.Interactivity.dll这

    2024年02月11日
    浏览(41)
  • 界面控件DevExpress WPF属性网格 - 让应用轻松显示编辑各种属性事件

    DevExpress WPF Property Grid(属性网格)灵感来自于Visual Studio,Visual Studio启发的属性窗口(对象检查器)让在WPF应用程序显示和编辑任何对象的属性和事件变得更容易! P.S :DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress

    2024年01月18日
    浏览(66)
  • WPF 与 Winform 的区别以及应用场景

    一、WPF框架以及应用场景 ​ WPF框架 ​ 1.1、WPF与WinForm ​ WPF :https://github.com/dotnet/wpf ​ SilverLight : Web富客户端 ​ 1.2、异/同点 ​ 共同点:最终的输出结果都是客户端应用,实现 人机交互。 ​ 异同点: ​ 界面渲染不一样 ​ 业务逻辑控制不一样(界面设计,色彩、尺寸比

    2024年02月09日
    浏览(38)
  • C#控制台应用程序如何添加窗口关闭事件?

    公司有一个控制台应用程序,在关闭控制台应用程序窗口前,想处理一下业务逻辑。还有比如误操作关闭了,或者像消息队列启动了发送消息提醒,那关闭了窗口代表控制台应用销毁了,也需要发送消息通知。那这个时候添加关闭窗口事件就派上用场了。 很多小伙伴问,有没

    2024年02月13日
    浏览(48)
  • 事件驱动编程:如何在应用程序中处理用户输入和交互

    [toc] 引言 1.1. 背景介绍 随着互联网技术的快速发展,应用程序被广泛应用于人们的生活和工作中。在这些应用程序中,用户输入和交互是必不可少的组成部分。如何优雅地处理用户输入和交互,让应用程序更加符合用户的使用习惯,是摆在每个程序员面前的一个重要问题。

    2024年02月07日
    浏览(60)
  • windows11 出现SearchHost.exe应用程序崩溃事件原因分析

    3月15日之后,点击搜索框的时候总是卡顿,点不开,查看系统事件,发现系统出现上万条的SearchHost.exe事件。参照微软网站上的回复,重建了索引,重装了应用都不能解决问题。鉴于之前没有出现过这个问题,于是把最近安装的软件全部卸载,依然没解决问题。 最后怀疑是系

    2024年02月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包