Wpf Application类的任务:

首先Application能够实现几种功能,比如访问命令行参数,获取当前程序类的实例,以及常见的单窗口程序实例.

访问命令行参数:

第一种: 获取获取方式使用Environment.GetCommandLineArgs();

第二种: 响应 Application 类的 OnStartup() 事件.

Example:

        /// <summary>
        /// 通过类属性=>调试=>命令行参数执行相应的动作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            bool startMinmized = false;

            for (int i = 0; i < e.Args.Length; i++)
            {
                if (e.Args[i] == "/StartMinmized")
                    startMinmized = true;
            }

            MainWindow win = new MainWindow();

            if (startMinmized)
            {
                win.WindowState = WindowState.Minimized;
                win.Content = "当前命令参数为:" + e.Args[0];
            }
            win.Show();
        }        

获取当前程序实例:

Application.Current 属性访问 Application 类的实例.

Application      对象提供了几个相当有用的属性:

MainWindow    开发人员可以访问这个属性来获取应用程序的主窗口.

Windows    集合属性用于获取当前打开的引用程序窗口的集合.

Properties  属性可以访问和设置应用程序的设置,

Resources 属性可以访问和设置应用程序的资源.

单例应用程序(1)

    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        /// <summary>
        /// Mutex 在System.Threading命名空间中,成为同步基元,或者成为互斥元.
        /// 当创建一个引用程序类时,将同时创建一个系统范围内的命名的Mutex对象.
        /// 这个互斥单元在整个操作系统中都是可见的.
        /// </summary>
        Mutex mutex;

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            string mutexName = "SingleInstanceApplication";

            bool CreatedNew;

            //判断是否已经创建相同实例名称的应用程序
            mutex = new Mutex(true, mutexName, out CreatedNew);
            if (!CreatedNew)
            {
                MessageBox.Show("已经存在一个引用程序势力");
                Shutdown();
            }
        }
    }

单例应用程序(2)

创建类似于Excel程序单个进程多个窗体程序.

//程序入口

namespace SingleInstanceWithCommunication
{
    public class Startup
    {
        [STAThread]
        public static void Main(string[] args)
        {
            SingleApplicationBase sab = new SingleApplicationBase();
            sab.Run(args);
        }
    }
}

//单例程序基础类,并且承

FIRST ADD DLL:Microsoft.VisualBasic;

using Microsoft.VisualBasic.ApplicationServices

namespace SingleInstanceWithCommunicationhCommunication
{
    public class SingleApplicationBase : WindowsFormsApplicationBase
    {
        public SingleApplicationBase()
        {
          //设置应用程序为单例程序
            this.IsSingleInstance = true;
        }

    //SingleInstanceWithCommunication.App
        App wpfApp;
        protected override bool OnStartup(StartupEventArgs eventArgs)
        {
            wpfApp = new App();
            wpfApp.Run();
            return false;
        }

        protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
        {
        //当前程序开启后,继续开启新程序会触发OnStartupNextInstance事件,程序作出相应动作.
        //可以获取当前参数在已开启的程序中操作相应动作.
            base.OnStartupNextInstance(eventArgs);
            if (eventArgs.CommandLine.Count > 0)
                wpfApp.ShowWindowText(eventArgs.CommandLine[0]);
        }
    }
}

//关于APP变量的相关代码

namespace SingleInstanceWithCommunication
{
    /// <summary>
    /// App.xaml 的交互逻辑
    /// </summary>
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            MainWindow win = new SingleInstanceWithCommunication.MainWindow();
            this.MainWindow = win;
            win.Show();
            if (e.Args.Length > 0)
                ShowWindowText(e.Args[0]);
        }

        public void ShowWindowText(string fileName)
        {
            Window1 win = new Window1();
            win.Title = fileName;
            ((MainWindow)this.MainWindow).lstBox.Items.Add(fileName);
            win.Owner = this.MainWindow;
            win.LoadFile(fileName);
            win.Show();
        }
    }
}
时间: 2024-10-21 06:46:29

Wpf Application类的任务:的相关文章

WPF Application 类介绍以及WPF异常处理

现在把wpf中的application和特殊的异常处理办法公布如下: wpf中对启动窗体等的控制 是APP.XAML文件和其cs文件下面,可以在XAML中进行编码,也可以在后台cs代码中编码 首先讲解Application类 属性: Current                  获取当前 AppDomain的 Application 对象 MainWindow           获取或设置应用程序的主窗体.(下面详细介绍) Resources              获取或设置应用程序范

博客园WPF Application类

所有的WPF程序,都是由Application类实例创建,该类负责打开当前应用程序和窗体,并且决定如何关闭应用程序等.Application类的主要功能可以简单总结以下几点: 1.保持主线程 使用Application后,只要有窗体没有退出,则应用程序不会退出,他会重新定义出新的主窗体,只有所有的窗体都关闭,Appliction才决定是否退出应用程序.Application起到管理所有窗体的作用.看如下代码: class Program { [STAThread()] static void M

六,WPF的Application类

Application.ShutdownMode属性:通过,只要有一个窗口还没有关闭,Application类就保持应用程序处于有效状态,如果这不是所期望的行为,就可以调整该属性. 应用程序事件 Application提供了为数不多的几个非常有用的事件,如下图所示: 有两种选择用于处理事件:在XAML中使用事件特性的方式关联事件处理程序,或重写相应的受保护方法,当重写应用程序方法时,推荐首先调用基类的实现,通常,基类的实现只是引发相应的应用程序事件. 初始界面(SplashScreen) WPF

WPF中的Application类。

原文:WPF中的Application类. Application对象用的名称空间是system.windows 1.手动创建Application对象步骤. 1.1).把项目中的App.Xaml文件从项目中排除. 1.2).新建Startup类. 1.3).在类中声明静态的.无返回值的Main方法. 1.4).在方法中创建application对象和窗口对象. public class Startup { [STAThread] //指定应用程序的 COM 线程模式是单线程单元(STA) st

【WPF学习】第二十六章 Application类——应用程序的生命周期

原文:[WPF学习]第二十六章 Application类--应用程序的生命周期 在WPF中,应用程序会经历简单的生命周期.在应用程序启动后,将立即创建应用程序对象,在应用程序运行时触发各种应用程序事件,你可以选择监视其中的某些事件.最后,当释放应用程序对象时,应用程序将结束. 一.创建Application对象 使用Application类的最简单方式是手动创建它.下面的示例演示了最小的程序:在应用程序入口(Main()方法)处创建名为MainWindow的窗口,并启动一个新的应用程序: 在本质

浅析C#(WPF)中的Application类

Application类 封装WFP应用程序. 命名空间:System.Windows 语法:public class Application : DispatcherObject, IQueryAmbient 可以看到Application继承了DispatcherObject类和IQueryAmbient接口. 首先看一下DispatcherObject类 DispatcherObject类 表示与Dispatcher关联的对象 命名空间:System.Windows.Threading 语

每天翻译一点点: WPF Application Framework (WAF)

ps:http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&referringTitle=Documentation Model-View-ViewModel Pattern Common abbreviations: M-V-VM or MVVM Introduction Separating user interface code from everything else is a key principl

创建一个自定义的Application类

由于每个应用程序必须创建一个Application对象,vs为开发人员提供了模板来减轻开发人员的重复工作.当使用vs创建一个WPF应用程序是,vs会自动创建一个app.xaml文件, <Application x:Class="WpfApplication8.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mi

WPF——Application

Application类处于WPF应用程序的最顶端,main函数就在这个类中. Application类的作用: 截图连接 https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.application?view=netframework-4.8 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/app-development/application-management-ov