《Programming WPF》学习(二)Application及其设置
??????Application是一個地址空間,在WPF中應用程序就是在System.Windows命名空間下的一個Application實例。一個應用程序只能對應一個Application的實例,而Application的生命周期自然是從運用程序啟動到終止的周期。
??????2.11Application的創(chuàng)建
??????Application的創(chuàng)建分為顯式和隱式兩種方式
顯示創(chuàng)建Applicationusing?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()),在創(chuàng)建Application對象的時候,會對Application靜態(tài)屬性Current賦予新創(chuàng)建的對象,所以app.run()也可以替換成Application.Current.Run()
隱式創(chuàng)建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方法調用時)出發(fā)的OnStartup事件對應的方法,將主窗體的實例化放在該方法中。事實上WPF中會自動創(chuàng)建Main函數(shù),并依照工程文件中指定的相關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被創(chuàng)建后第一個創(chuàng)建的頂級窗口就是主窗口,也可以通過設置MainWindow屬性來改變主窗口。
Application的關閉模式有三種,分別為OnMainWindowClose、OnLastWindowClose和OnexplictShutDow。前兩種枚舉見名知意,前兩種關閉模式也可以調用ShutDown方法來手動關閉應用程序,而最有一個模式只能調用ShutDown方法才能關閉應用程序。
??????Application的事件
???? Startup當Applicaton實例調用Run方法時觸發(fā);Activated和Deactivated事件,當一個窗口被激活時觸發(fā)Activated試件,當應用程序被激活且另一個頂級窗口激活時觸發(fā)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應用程序部署???????
??????這一節(jié)看得不是很懂,本來就對framewrk的發(fā)布機制有點模糊的概念,這節(jié)跳過。之后補齊對其的認識
??????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數(shù)據(jù)banding到Path指定的屬性下
?
運行效果?
?
轉載于:https://www.cnblogs.com/FlyCloud/archive/2009/04/06/1430482.html
總結
以上是生活随笔為你收集整理的《Programming WPF》学习(二)Application及其设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孟羽童接私活收入需要分给格力吗?律师回应
- 下一篇: 网页UTF8编码--多出空白行的问题(Z