成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WPF Application性能講解

開發 開發工具
WPF Application在WPF的實際使用中是非常重要的一個操作。我們可以通過WPF Application來帶領全局的行為與操作向一個正確的方向進行。

WPF開發工具是由微軟研發的一款UI領域的圖形界面處理工具。可以幫助程序員們很方便的實現特殊的圖形界面效果。Form 類似, WPF 同樣需要一個 Application 來統領一些全局的行為和操作,并且每個 Domain 中只能有一個WPF Application實例存在。#t#

和 WinForm 不同的是WPF Application默認由兩部分組成 : App.xaml 和 App.xaml.cs,這有點類似于 Delphi Form,將定義和行為代碼相分離。當然,WebForm 也采用了類似的方式。XAML 從嚴格意義上說并不是一個純粹的 XML 格式文件,它更像是一種 DSL,它的所有定義都直接映射成某些代碼,只不過具體的翻譯工作由編譯器完成而已。

下面是一個簡單的 App 定義。

 

  1. public partial class 
    App : Application  
  2. {  

當你在自動生成的 Project 代碼中看到 paritial 時,應該下意識去找找 "This code was generated by a tool." …… 不過這次自動生成的代碼存放位置更加古怪 —— objDebugApp.g.cs。

 

  1. public partial class App : 
    System.Windows.Application  
  2. {  
  3. [DebuggerNonUserCode]  
  4. public void Initialize
    Component()  
  5. {  
  6. this.StartupUri = new 
    System.Uri("Window1.xaml", 
    System.UriKind.Relative);  
  7. }  
  8. [STAThread]  
  9. [DebuggerNonUserCode]  
  10. public static void Main()  
  11. {  
  12. App app = new App();  
  13. app.InitializeComponent();  
  14. app.Run();  
  15. }  

 

App.StartupUri 用于設置 MainWindow,App.Run() 啟動消息循環。當然,還有那個 STAThread,這意味著WPF Application依舊使用一個 UI Thread 來處理 UI Message。

我們完全可以舍棄自動生成的代碼,自己手工寫一個 App。

 

  1. public class App : Application  
  2. {  
  3. [STAThread]  
  4. private static void Main()  
  5. {  
  6. var app = new App();  
  7. var window = new Window 
    Title = "WPF" };  
  8. app.Run(window);  
  9. }  

 

WPF Application提供了一些實用的屬性和方法。

Current: 獲取 Domain 中默認的 Application 實例。

MainWindow: 獲取主窗口實例。

Windows: 獲取所有被實例化的 Window 實例。

ShutdownMode: 指定 Application.Shutdown 方式,包括主窗體關閉,最后一個窗口關閉,以及手工調用 Shutdown()。

Properties: 一個線程安全的全局字典,可用來存儲一個公共信息。

Shutdown: 該方法終止 Application Process,可向操作系統返回一個退出碼。

我們依然可以使用 Mutex 來阻止運行多個實例。

 

  1. private void Application_Startup
    (object sender, StartupEventArgs e)  
  2. {  
  3. var createdNew = false;  
  4. var name = Assembly.GetEntry
    Assembly().FullName;  
  5. new Mutex(true, name, out 
    createdNew);  
  6. if (!createdNew)  
  7. {  
  8. MessageBox.Show("There is 
    already an instance 
    running, Exit!");  
  9. Application.Current.Shutdown();  
  10. }  

當然也可以用 Windows 屬性判斷窗體是否已經存在。

 

  1. private void button1_Click
    (object sender, RoutedEventArgs e)  
  2. {  
  3. var window2 = Application.
    Current.Windows.OfType
    <Window>().FirstOrDefault
    (
    w => w is Window2);  
  4. if (window2 == null) 
    window2 = new Window2();  
  5. window2.Show();  
  6. window2.Activate();  

以上就是我們通過各種實例代碼為大家解讀的WPF Application相關概念。

責任編輯:曹凱 來源: 開發學院
相關推薦

2010-04-26 12:30:42

Unix Shell

2010-01-13 17:17:32

四層千兆接入交換機

2010-04-30 18:38:45

Unix系統

2009-12-25 17:39:01

WPF驗證

2010-05-07 16:53:28

Unix format

2009-12-23 10:13:20

WPF體系架構

2023-05-11 08:59:43

Nginx配置服務器

2010-02-07 14:16:57

2009-12-23 15:16:52

WPF數據綁定

2009-12-24 13:51:49

WPF文檔打印

2009-12-08 15:18:01

路由器功能

2009-12-24 09:56:29

WPF圖像API

2009-12-28 17:26:17

WPF可視化

2009-12-28 11:09:25

WPF啟動參數

2009-12-23 17:31:56

WPF Style

2009-12-23 17:07:37

WPF性能

2015-07-29 11:05:58

IE開發人員實用功能

2009-12-25 10:39:49

WPF應用程序關閉

2009-12-29 10:11:56

WPF布局屬性

2009-12-24 16:46:03

WPF性能優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 全免费a级毛片免费看视频免费下 | 午夜一级大片 | 老外黄色一级片 | 国产一区二区三区免费视频 | 91久久精品国产91久久性色tv | 国产精品久久久久永久免费观看 | 精品一区二区观看 | 国产亚洲精品一区二区三区 | 久久久久久久国产 | 国产精品国产三级国产aⅴ无密码 | 久久男人天堂 | 福利视频三区 | 欧美日本一区二区 | 中文字幕日韩一区 | 中文字幕不卡在线88 | 超碰一区二区 | 老牛嫩草一区二区三区av | 小草久久久久久久久爱六 | 成人免费在线观看 | 中文字幕欧美一区 | 91免费看片神器 | 中文字幕在线视频免费观看 | 国产乱码一二三区精品 | 天堂一区二区三区 | 久久黄视频 | 日韩视频一区二区 | 久亚州在线播放 | 亚洲一区二区高清 | 成人精品国产一区二区4080 | 中文字幕av一区二区三区 | 91精品一区二区三区久久久久 | 精品欧美一区二区久久久伦 | 欧美国产精品一区二区三区 | 国产欧美日韩精品一区二区三区 | 青青久草 | 久久综合久 | 巨大荫蒂视频欧美另类大 | 国产传媒视频在线观看 | 亚洲一区二区久久久 | 亚洲日韩中文字幕一区 | 国产精品69毛片高清亚洲 |