Application 类

VS 并不采用这种模式,而是从Application类中派生一个自定义的类,在派生的自定义类中,放置所有事件处理代码。VS为Application类使用的模型本子上和用于窗口的模式是相同的,七点是一个XAML的模板,默认情况下,被默认为App.xaml

应用程序的关闭方式 :ShutdownMode

应用程序事件:

  • Startup:在调用Run方法之后,主窗口显示之前发生;
  • Exit:在应用程序关闭时,在Run方法返回之前发生;
  • SessionEnding:在Windows对话结束时发生,对用户注销或关闭计算机
  • Activated:当应用程序的一个窗口被激活,从其他应用程序切换到当前应用程序
  • Deactivated:当一个应用程序被取消激活,切换到另一个应用程序
  • DispatcherUnhandledException:发生未处理异常触发事件

有两种选择用于处理这些事件;  

  1. 关联事件的处理程序
  2. 重写相应的受保护的方法:对于每一个应用程序都可以调用相关的方法来引发这个事件。方法的名称就是  On+事件的名称,

Application 类的任务:

  • 显示初始界面 :设置图片属性为SplashScreen时,在加载主窗体时同时加载图像
  • 处理命令参数行:响应StartUp事件 ——在项目邮件,属性,调试,命令行参数


     

    App.xaml

     private void Application_Startup(object sender, StartupEventArgs e)
            {
                MainWindow win = new MainWindow();
                if (e.Args.Length > 0)
                {
                    string file = e.Args[0];
                    if (File.Exists(file))
                    {
                        win.LoadFile(file);
                    }
                }
                win.Show();
            }

    MainWindow

            public void LoadFile(string path)
            {
                //this.Content = File.ReadAllText(path);
                this.TextBlock.Text = System.IO.File.ReadAllText(path);
                this.Title = path;
            }
  • 访问当前Application对象
    通过静态对象的Common属性,可以在任何地方获取当前应用程序实例,从而实现窗口的交互。(任何对象都可以访问Application对象并通过Application对象获取主窗口的引用)
  • 在窗口之间切换

 

 单实例应用程序 :通过Wapper实现,具体见 gitHub项目。

https://github.com/Springxi/Demo.WPFLearning

 
原文地址:https://www.cnblogs.com/codinghard/p/15680454.html