《Programming WPF》学习(二)Application及其设置
Application是一个地址空间,在WPF中应用程序就是在System.Windows命名空间下的一个Application实例。一个应用程序只能对应一个Application的实例,而Application的生命周期自然是从运用程序启动到终止的周期。
2.11Application的创建
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()
<!--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文件中直接指定程序运行时实例化并显示的主窗口,如下代码:
<!--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及其设置相关推荐
- WPF学习拾遗(二)TextBlock换行
原文:WPF学习拾遗(二)TextBlock换行 下午在帮组里的同事解决一个小问题,为了以后方便,把就把它收集一下吧. 新建一个TextBlock作为最基础的一个控件,他所携带的功能相对于其他的控件要 ...
- Programming C# 学习笔记(二) 出发:“Hello World”
小序: 准备写这章的学习笔记了,啊,Hello World!多么亲切的语句,呵呵,当初学C语言的第一个程序就是输出它, 还记得费了好大劲终于把它输出来时候的那种兴奋感觉,真是让我怀念哦!(然 ...
- .NET-7.WPF学习2. 知识总结
WPF学习2. 知识总结 前言 一.面试 二.代码片段 三.查看链接 前言 对wpf 的知识总结. 一.面试 1. 跨线程操作(Dispatcher)2. template(模板类型[控件模板.数据模 ...
- WPF学习开发客户端软件-任务助手(下 2015年2月4日代码更新)
时光如梭,距离第一次写的 WPF学习开发客户端软件-任务助手(已上传源码) 已有三个多月,期间我断断续续地对该项目做了优化.完善等等工作,现在重新向大家介绍一下,希望各位可以使用,本软件以实用性为主 ...
- spring security 学习二
spring security 学习二 doc:https://docs.spring.io/spring-security/site/docs/ 基于表单的认证(个性化认证流程): 一.自定义登录页 ...
- WPF学习笔记-第二周【基本笔刷】
书接上回,这一次,讲的是WPF中的基本笔刷,由于是菜鸟,就不多说了,继续帖示例代码:) 第一部份 代码 第二章 基本笔刷 第一个 示例 VaryTheBackgroud P38 1 #reg ...
- 【WPF学习】第五十章 故事板
正如上一章介绍,WPF动画通过一组动画类(Animation类)表示.使用少数几个熟悉设置相关信息,如开始值.结束值以及持续时间.这显然使得它们非常适合于XAML.不是很清晰的时:如何为特定的事件和属 ...
- Elasticsearch 学习(二).实战使用
Elasticsearch 学习(二).实战使用 参考:http://www.passjava.cn/#/01.PassJava/02.PassJava_Architecture/15.Elastic ...
- WPF学习之资源-Resources
WPF学习之资源-Resources WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些 ...
最新文章
- 构建第三代人工智能核心能力,清华、阿里、RealAI等联合发布最新AI安全评估平台
- print python 如何加锁_深度解密Python单例模式
- 3-15 《元编程》第6章 3-16 hook method
- java报错 日志_java 日志报错
- sqlite_orm sync_schema源码即翻译
- 算法题存档20190207
- lasso模型交替方向matlab_TCGA系列学习笔记(7)建模及模型评价
- linux 主机大华 摄像头,linux设备上的Onvif 实现21:解决大华摄像头无法使用问题...
- php中的print r与echo,php中echo(),print(),print_r()的区别
- 艾默生变频器报警PHP,艾默生/Emerson变频器启动就报警维修很牛
- linux 解压bz2文件
- 一元函数积分学基本计算例题
- word中替换方式处理多行文本为一段
- 教你一招,解决C盘空间不足问题
- Windows 无法打开“添加打印机”。本地打印后台处理程序服务没有运行。请重新启动打印机后台处理程序或重新启动计算机。...
- 【漏洞复现-Tomacat-文件上传】vulfocus/tomcat-cve_2017_12615
- FineBI 中 逻辑函数if 嵌套 没有else
- html css 基本词汇
- CSS3中的关键帧@keyframes 和 动画animation
- isis宣告网络_isis简要原理、实验和常用命令
热门文章
- Saleor ran into an unexpected problem
- saleor的测试用账户地址This value is not valid for the address
- ubuntu下面的报错Call to undefined function curl_init()
- Vue文件的缩进改为4个空格
- js中输出变量的类型和输出对象的的属性/方法/成员函数
- 图像种类的基本概念整理
- gedit把关键字符替换为回车键
- arcball原理 旋转视图 关键点总结 及代码
- 方程的解_NOI导刊2010提高(01) 组合数
- Spark-core(核心)的基本介绍