官术网_书友最值得收藏!

1.1 WPF應用程序的創建

在Windows操作系統中,所有的應用程序都在自己獨立的進程中運行,WPF也不例外。每個進程都有自己獨立的內存地址,進程間的數據是隔離的,進程之間不會相互影響。當應用程序創建進程時,同時創建一個或多個線程。線程在自己的進程空間中運行,在底層,WPF仍然使用Windows的消息驅動機制來實現事務處理。

創建WPF應用程序從創建Application類開始。WPF的主要功能是人機交互,我們可以把當代人機界面(UI)程序歸為兩大類:一類是桌面(desktop)應用程序;一類是互聯網(Web)應用程序。WPF首次實現了對這兩類應用程序的統一編程。

讓我們來創建一個簡單的WPF程序:

  using System;
  using System.Windows;
  namespace Yingbao.Chapter1
  {
    public class HelloWPF
    {
      [STAThread]
      public static void Main()
      {
          Window win = new Window();
          win.Title = "WPF application";
          win.Content = "Hello WPF!";
          win.Show();
          Application app = new Application();
          app.Run();
      }
    }
  }

首先,用Yingbao.Chapter1聲明命名空間,并將在本書的所有例程中使用這一慣例。第1章的例程在Yingbao.Chapter1的命名空間中,第2章的例程將在Yingbao. Chapter2的命名空間中等。

然后,引入了.NET中的兩個命名空間: System和System.Windows。 System命名空間提供.NET的基本服務,System.Windows中含有WPF的基本服務。Microsoft把WPF所用的類,都放在System.Windows的命名空間或其下面的命名空間中,如System.Windows.Controls、System.Windows.Input,等等。在Visual Studio的項目下,引入相應的Assembly, 這樣就可以使用這些命名空間中的類了。

Main函數是WPF程序的入口點,它必須是靜態(static)的。所有WPF程序,都必須在單一線程公寓(STA)模型中運行。STA來源于COM,若對此概念不熟悉,可以參考COM的相關著作或文章。在Main函數前加上STAThread屬性,就是滿足WPF的這一要求,即UI不能在多線程的環境中運行。

在這個程序里,創建了一個Window類實例; Window類是管理WPF桌面應用程序的窗口類。其Title屬性就是窗口標題,而Content屬性是窗口中所要顯示的內容。和.NET 1.0中的Form顯示窗口一樣,需要調用Show()方法,最后創建了Application類實例,并調用其Run() 方法。Run() 方法創建了和Win32一樣的消息分配機制,它會接收操作系統發給應用程序的消息,并對相關消息進行響應。這個程序的運行結果如圖1-1所示。

圖1-1 Hello WPF!

你也可以不用調用Window類中的Show方法,而使用更為簡潔的形式:

  app.Run(win);

在這種情況下,Run方法將會自動調用win.Show()。

主站蜘蛛池模板: 泰宁县| 长宁县| 高安市| 商河县| 壤塘县| 普格县| 宿州市| 新安县| 鲁甸县| 沂源县| 武平县| 晋江市| 当阳市| 北海市| 密云县| 木里| 陇南市| 左贡县| 湖州市| 富蕴县| 汉寿县| 抚顺市| 阿坝县| 辛集市| 洛隆县| 苍南县| 佛坪县| 万年县| 丰宁| 和平县| 辉南县| 张掖市| 龙岩市| 五台县| 来凤县| 石狮市| 增城市| 买车| 高唐县| 介休市| 鄱阳县|