1983~1991年:C搭配Windows API。當時的程序員是不多的,而且開發一個項目也比較的不容易。
1992~2001年:C++搭配MFC庫。在歷史上MFC是最多人用的Windows編程方法。但此後MFC技術也逐漸退出了歷的舞臺。
2002~2006年:(C#、VB以及其餘語言)+Windows Form框架。這段期間IT技術的焦點是在Web上,因此雖然你們都在用.NET,但真正的主角是ASP.NET,而不是Windows Forms。Windows Forms還沒等熬出頭,WPF就出現了。
2007~如今 :2007年1月30日,Windows Vista正式全球同步發佈。它之因此能實現那麼絢麗的效果,最關鍵的一點就是Windows Presentation Foundation(WPF),由後臺語言(C#、VB以及其餘語言)+XAML構成。由於WPF支持硬件加速、精確顏色、浮點座標、動畫實現、三維、視頻,這些效果是傳統的 Winform 達不到的。程序員
WPF和 傳統的WinForm 相似, WPF 一樣須要一個 Application 來統領一些全局的行爲和操做,而且每一個Domain(應用程序域)中只能有一個 Application 實例存在。編程
構造函數
Show()、ShowDialog()方法
Loaded事件安全
Close()方法
Closing事件、Closed事件app
Activate()方法
Activated、Deactivated事件框架
窗體邊框模式(WindowStyle屬性)和是否容許更改窗體大小(ResizeMode屬性)。函數
窗體啓動位置(WindowStartupLocation屬性)和啓動狀態(WindowState屬性) 等。佈局
窗體標題(Title屬性)及圖標 。測試
是否顯示在任務欄(ShowInTaskbar)動畫
始終在最前(TopMost屬性)this
Object:全部類的基類
DispatcherObject:保證線程安全的基類
DependencyObject :參與依賴屬性系統的基類
Visual:爲WPF提供呈現支持,包括命中測試,座標轉換和邊界框計算
UIElement:核心級可視化元素基類,提供了佈局,輸入,焦點,路由,動畫功能
FrameworkElement:框架級可視化元素基類,擴展了佈局系統,邏輯樹,生存期事件,數據綁定,樣式,更多動畫等功能
Control:控件基類,可使用ControlTemplate來定義外觀,重寫了Focusable,默認爲true
Panel:面板基類,用於放置及排列子元素,默認不接受焦點,Focusable爲false
ContentControl :包含任何類型的單項內容的控件,具備Content屬性,默認樣式有限,若是要加強控件外觀,能夠設置其ContentTemplate
在許多技術中,元素和組件都按樹結構的形式組織。在這種結構中,開發人員能夠直接操做樹中的對象節點來影響應用程序的呈現或行爲。WPF也使用了若干樹結構形式來定義程序元素之間的關係。 WPF 公開兩個提供樹形式視圖的幫助器類:LogicalTreeHelper 和 VisualTreeHelper。 WPF 文檔中還使用了「可視化樹」和「邏輯樹」兩個術語,它們有助於理解某些關鍵 WPF 功能的行爲。
XAML 是一種聲明性標記語言。XAML 文件是一般具備 .xaml 擴展名的 XML 文件
<StackPanel> <Button Content="Click Me"/> </StackPanel>
<Button/> <Button></Button>
<Button Background="Red" Foreground="Blue" Content="Click Me!"/> <Button> <Button.Background>Red</Button.Background> <Button.Foreground>Blue</Button.Foreground> <Button.Content>Click Me!</Button.Content> </Button>
<LinearGradientBrush> <LinearGradientBrush.GradientStops> <GradientStop Offset="0.0" Color="Red" /> <GradientStop Offset="1.0" Color="Blue" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <ListBox> <ListBoxItem Content="ListBoxItem1"/> <ListBoxItem Content="ListBoxItem2"/> <ListBoxItem Content="ListBoxItem3"/> </ListBox>
<Border> <TextBox Width="300"/> </Border> <Border> <Border.Child> <TextBox Width="300"/> </Border.Child> </Border> <Button>Hello</Button>
<Button Click="Button_OnClick"/>
<Window.Resources> <SolidColorBrush x:Key="MyBrush" Color="Gold"/> <Style TargetType="Border" x:Key="PageBackground"> <Setter Property="Background" Value="Blue"/> </Style> </Window.Resources> <Border Style="{StaticResource PageBackground}"/>
<Button Margin="10,20,10,30"/> <Button> <Button.Margin> <Thickness Left="10" Top="20" Right="10" Bottom="30"/> </Button.Margin> </Button>
<Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
x:Key:爲 ResourceDictionary(或其餘框架中的相似字典概念)中的每一個資源設置惟一的鍵。 在典型的 WPF 應用程序標記中的全部 x: 用法中,x:Key 將可能佔到 90%。
x:Class:向爲 XAML 頁提供代碼隱藏的類指定 CLR 命名空間和類名。 必須具備這樣一個類才能支持每一個 WPF 編程模型的代碼隱藏,而正是所以,即便沒有資源,也幾乎老是能看到映射的 x:。
x:Name:處理對象元素後,爲運行時代碼中存在的實例指定運行時對象名稱。 一般,您將爲 x:Name 常常使用 WPF 定義的等效屬性。 此類屬性特定映射到 CLR 後備屬性,所以更便於進行應用程序編程,在應用程序編程中,您常常使用運行時代碼從初始化的 XAML 中查找命名元素。 最多見的此類屬性是 FrameworkElement.Name。 在特定類型中不支持等效的 WPF 框架級 Name 屬性時,仍然可使用 x:Name。 某些動畫方案中會發生這種狀況。
x:Static:啓用一個返回靜態值的引用,該靜態值只能是一個 XAML 兼容屬性。
x:Type:根據類型名稱構造一個 Type 引用。 它用於指定採用 Type(例如 Style.TargetType)的特性,但屬性常常具備本機的字符串到 Type的轉換功能,所以使用 x:Type 標記擴展用法是可選的。
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Button Grid.Column="0"/> <Button Grid.Column="1"/> </Grid>
var window = XamlReader.Load(File.OpenRead("MainWindow.xaml")) as Window; using (var stream = File.Create("MyWindow.xaml")) { XamlWriter.Save(this, stream); }
來源:深圳築星科技