码迷,mamicode.com
首页 > 移动开发 > 详细

六,WPF的Application类

时间:2014-07-31 02:34:55      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   strong   文件   

  1. Application.ShutdownMode属性:通过,只要有一个窗口还没有关闭,Application类就保持应用程序处于有效状态,如果这不是所期望的行为,就可以调整该属性。bubuko.com,布布扣
  2. 应用程序事件
    Application提供了为数不多的几个非常有用的事件,如下图所示:
    bubuko.com,布布扣
    有两种选择用于处理事件:在XAML中使用事件特性的方式关联事件处理程序,或重写相应的受保护方法,当重写应用程序方法时,推荐首先调用基类的实现,通常,基类的实现只是引发相应的应用程序事件。
  3. 初始界面(SplashScreen
    WPF应用程序的运行速度快,但不可能在瞬间启动。当第一次启动应用程序时,会有一些延迟,因为公共语言运行时首先需要初始化.Net环境,然后启动应用程序。这一延迟不见得会成为问题,通常,只需要经过很短的时间,就会出现第一个窗口。但是,如果具有更加耗时的初始化步骤,或者如果只是希望通过显示一个打开的图形使应用程序显得更加专业,此时,就可以使用WPF提供的简单的初始界面特性。下面是添加初始界面的方法:
    1)  为项目添加一个图像文件。
    2)  把此图像文件的生成操作设置为SplashScreen
    下次运行应用程序时,该图形会立即在屏幕中央显示出来,一旦准备好了运行时环境,并且Application_Startup方法执行完毕,应用程序的第一个窗口显示出来,这时初始界面图形会很快的逐渐消失(大约300毫米).
    我们可以自己编写初始界面的显示逻辑来改变初始界面褪去的速度,为此,需要向SplashScreen.Show()方法传递false,然后通过调用SplashScreen.Close()方法且可以提供一个TimeSpan值指示经过多长时间淡出初始界面。
  4. 处理命令行参数
    为了处理命令行参数,需要响应Application.Startup事件,命令行参数是通过StartupEventArgs.Args属性作为字符串数组提供的。例如,假定希望加载一个文档,文档的名称作为命令行参数传递,在这种情况下,就有必要读取命令行参数并进行所需要的一些额外的初始化操作,在下面的示例中,通过响应Application.Startup事件实现了这一模式,在该示例中没有在任何地方设置Application.StartupUri属性,而是使用代码实例化主窗口。
    bubuko.com,布布扣
    public partial class App : Application
    {
        // The command-line argument is set through the Visual Studio
        // project properties (the Debug tab).
        private void App_Startup(object sender, StartupEventArgs e)
        {           
            // At this point, the main window has been created but not shown.
            FileViewer win = new FileViewer();
    
            if (e.Args.Length > 0)
            {
                string file = e.Args[0];
                if (File.Exists(file))
                {
                    // Configure the main window.                    
                    win.LoadFile(file);
                }
            }
    
            // This window will automatically be set as the Application.MainWindow.
            win.Show();
        }
    }
    View Code

    bubuko.com,布布扣

  5. 访问当前Application对象
    通过静态的Application.Current属性,可以在应用程序的任何位置获取当前应用程序实例。
    在一个窗口中可以检查Application.Windows集合的内容,这个集合提供了所有当前打开窗口的引用。
  6. 在窗口这间进行交互
    在应用程序类中我们可以添加代码来保存重要窗口的引用,从而使一个窗口可以访问另一个窗口。例如,假设希望跟踪应用程序使用的所有文档窗口,可以在自定义的应用程序类中创建一个专门的集合。下面是一个使用泛型列表集合保存一组自定义窗口对象的示例。在这个示例中,每个文档窗口由一个名为Document的类的实例表示:
    bubuko.com,布布扣
    public partial class App : Application
    {
        private List<Document> documents = new List<Document>();
            
        public List<Document> Documents
        {
            get { return documents; }
            set { documents = value; }
        }
    }
    View Code

    现在,当创建一个新文档时,只需要记住把它添加到Documents集合中即可。下面是响应一个按钮单击事件的事件处理程序,创建一个新文档的同时把它添加到Documents集合中,同样,也可以在Document类中响应Window.Loaded这类事件,以确保当创建文档对象时,总会在Documents集合中注册该文档对象。

    bubuko.com,布布扣
    private void cmdCreate_Click(object sender, RoutedEventArgs e)
    {
        Document doc = new Document();
        doc.Owner = this;
        doc.Show();
        ((App)Application.Current).Documents.Add(doc);
    }
    View Code

    现在可以在代码中的其他任何地方使用集合来遍历所有文档,在这个示例中,Document类包含了一个自定义的用于更新显示的SetContent()方法:

    bubuko.com,布布扣
    private void cmdUpdate_Click(object sender, RoutedEventArgs e)
    {
        foreach (Document doc in ((App)Application.Current).Documents)
        {
            doc.SetContent("Refreshed at " + DateTime.Now.ToLongTimeString() + ".");
        }            
    }
    View Code

六,WPF的Application类,布布扣,bubuko.com

六,WPF的Application类

标签:style   blog   http   color   使用   os   strong   文件   

原文地址:http://www.cnblogs.com/jiao1855/p/3879611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!