2.1Application简介

Application是一个地址空间,在WPF中应用程序就是在System.Windows命名空间下的一个Application实例。一个应用程序只能对应一个Application的实例,而Application的生命周期自然是从运用程序启动到终止的周期。

2.11Application的创建

Application的创建分为显式和隐式两种方式

显示创建Application
using System;
using System.Windows;

Class Program{
  [STAThread]
  static vod main(){
    Application app = new Application();
    Window1 window=new Window1();
    window.Show();
    app.run();
  }
}

在上面的代码中,Windows1的对象即是应用程序的主窗体调用,这类似与2.0中的Program.cs文件中的run(new Windows1()),在创建Application对象的时候,会对Application静态属性Current赋予新创建的对象,所以app.run()也可以替换成Application.Current.Run()

隐式创建Application
<!--App.xaml-->
<Application 
  x:Class="ImplicitAppSample.App" 
  xmlns="Http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />


<!--App.xaml.cs-->
using System;
using System.Windows;

namespace ImolicitAppSample{
  public partial class App:Application{
    protected override void OnStartup(StartupEventArgs e){
      //let the base class have a crack
      base.OnStartup(e);
      //
      Windows1 window=Window1();
      window.Show();
    }
  }
}

在代码中定义一个继承与Application的类,并在类中重写Application启动时(Run方法调用时)出发的OnStartup事件对应的方法,将主窗体的实例化放在该方法中。事实上WPF中会自动创建Main函数,并依照工程文件中指定的相关Application对应所在文件app.xaml,实例化该应用程序类,并调用Run方法。除了在OnStartup时间对应分方法中指定实例化的主窗体,也可以在app.xaml文件中直接指定程序运行时实例化并显示的主窗口,如下代码:

Code
<!--App.xaml-->
<Application 
  x:Class="ImplicitAppSample.App" 
  xmlns="Http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  StartupUri="Window1.xaml" />

一个顶级窗口就是不包含或者不从属于其它窗口的窗口。Application被创建后第一个创建的顶级窗口就是主窗口,也可以通过设置MainWindow属性来改变主窗口。

Application的关闭模式有三种,分别为OnMainWindowClose、OnLastWindowClose和OnexplictShutDow。前两种枚举见名知意,前两种关闭模式也可以调用ShutDown方法来手动关闭应用程序,而最有一个模式只能调用ShutDown方法才能关闭应用程序。

Application的事件

Startup当Applicaton实例调用Run方法时触发;Activated和Deactivated事件,当一个窗口被激活时触发Activated试件,当应用程序被激活且另一个顶级窗口激活时触发Deactivated事件;SessionEnding事件是在窗口会话结束时调用;Exit则是应用程序退出的事件

Aplication的单一实例应用程序

单一实例应用程序
<!--在程序运行前加入判断-->
public partial class App:Application{
    
    Mutex mutex;

    protected override void OnStartup(StartupEventArgs e){
      //let the base class have a crack
      base.OnStartup(e);

      //判断
       string mutexName = "MyCompanyName.MyAppName";
      bool CreateNew;
      mutex=new Mutex(true,mutexName,out CreateNew);
      if(!CreateNew)
      {ShowDown();}

      //
      Windows1 window=Window1();
      window.Show();
    }

2.2应用程序部署

这一节看得不是很懂,本来就对framewrk的发布机制有点模糊的概念,这节跳过。之后补齐对其的认识

     2.3配置

WPF应用程序的设置跟以往的。net应用程序一样,也是在Settings标签中进行,具体的设置没有太多变化。对于设置好的设置可以通过System.Configuration命名空间下的CnfigurationManager类进行反问,也可以通过Properties.Settings.Default.<属性名称>反问。

在Wpf下对配置文件的访问

配置文件设置如图 

反问配置文件属性
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300"
        xmlns:local="clr-namespace:WpfApplication1.Properties">
    <Button Name="button1" Width="200" Height="200" Click="button1_Click">
        <Button.Content>
            <Grid Height="160" Width="161" >
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition Height="auto" MinHeight="16" />
                </Grid.RowDefinitions>
                <Image Name="image1" Grid.Row="0" Source=".\Source\Cat.gif" ImageFailed="image1_ImageFailed" />
                <TextBlock Grid.Row="1" HorizontalAlignment="Center" Text="{Binding Path=Name,Source={x:Static local:Settings.Default}}"></TextBlock>
            </Grid>
        </Button.Content>
    </Button>
</Window>

xaml文件中使用命名空间映射至WpfApplication1.Properties,再将TextBlock的Text数据banding到Path指定的属性下

运行效果 

转载于:https://www.cnblogs.com/FlyCloud/archive/2009/04/06/1430482.html

《Programming WPF》学习(二)Application及其设置相关推荐

  1. WPF学习拾遗(二)TextBlock换行

    原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...

  2. Programming C# 学习笔记(二) 出发:“Hello World”

    小序:      准备写这章的学习笔记了,啊,Hello World!多么亲切的语句,呵呵,当初学C语言的第一个程序就是输出它, 还记得费了好大劲终于把它输出来时候的那种兴奋感觉,真是让我怀念哦!(然 ...

  3. .NET-7.WPF学习2. 知识总结

    WPF学习2. 知识总结 前言 一.面试 二.代码片段 三.查看链接 前言 对wpf 的知识总结. 一.面试 1. 跨线程操作(Dispatcher)2. template(模板类型[控件模板.数据模 ...

  4. WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)

    时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码)  已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...

  5. spring security 学习二

    spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...

  6. WPF学习笔记-第二周【基本笔刷】

    书接上回,这一次,讲的是WPF中的基本笔刷,由于是菜鸟,就不多说了,继续帖示例代码:) 第一部份 代码 第二章 基本笔刷 第一个 示例 VaryTheBackgroud P38  1     #reg ...

  7. 【WPF学习】第五十章 故事板

    正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属 ...

  8. Elasticsearch 学习(二).实战使用

    Elasticsearch 学习(二).实战使用 参考:http://www.passjava.cn/#/01.PassJava/02.PassJava_Architecture/15.Elastic ...

  9. WPF学习之资源-Resources

    WPF学习之资源-Resources WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些 ...

最新文章

  1. 构建第三代人工智能核心能力,清华、阿里、RealAI等联合发布最新AI安全评估平台
  2. print python 如何加锁_深度解密Python单例模式
  3. 3-15 《元编程》第6章 3-16 hook method
  4. java报错 日志_java 日志报错
  5. sqlite_orm sync_schema源码即翻译
  6. 算法题存档20190207
  7. lasso模型交替方向matlab_TCGA系列学习笔记(7)建模及模型评价
  8. linux 主机大华 摄像头,linux设备上的Onvif 实现21:解决大华摄像头无法使用问题...
  9. php中的print r与echo,php中echo(),print(),print_r()的区别
  10. 艾默生变频器报警PHP,艾默生/Emerson变频器启动就报警维修很牛
  11. linux 解压bz2文件
  12. 一元函数积分学基本计算例题
  13. word中替换方式处理多行文本为一段
  14. 教你一招,解决C盘空间不足问题
  15. Windows 无法打开“添加打印机”。本地打印后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机。...
  16. 【漏洞复现-Tomacat-文件上传】vulfocus/tomcat-cve_2017_12615
  17. FineBI 中 逻辑函数if 嵌套 没有else
  18. html css 基本词汇
  19. CSS3中的关键帧@keyframes 和 动画animation
  20. isis宣告网络_isis简要原理、实验和常用命令

热门文章

  1. Saleor ran into an unexpected problem
  2. saleor的测试用账户地址This value is not valid for the address
  3. ubuntu下面的报错Call to undefined function curl_init()
  4. Vue文件的缩进改为4个空格
  5. js中输出变量的类型和输出对象的的属性/方法/成员函数
  6. 图像种类的基本概念整理
  7. gedit把关键字符替换为回车键
  8. arcball原理 旋转视图 关键点总结 及代码
  9. 方程的解_NOI导刊2010提高(01) 组合数
  10. Spark-core(核心)的基本介绍