1/ 什么是WPF
WPF,Windows Presentation Foundation也,譯過來就是“Windows呈現基礎”,你看它的目的非常明確,就是用來把數據“顯示”給用戶看的(說白了就是用來做UI的)。如果只是給用戶顯示幾串文本、兩三張圖片或者幾個表格那WPF就太糗了,幸乎,WPF可不是這等素食動物——大家都見過Flash動畫吧,WPF的顯示能力絲毫不亞於Flash以及Flash的同門師弟Flex+AIR(某建築公司產品)。
2/ 為什么會有WPF
“微軟出點兒什么新東西,我就得跟着跑!”我也曾這樣抱怨過。不過,當大量的工作任務壓在頭上的時候,我終於感覺到——每一次技術(包括理念、架構、語言、工具)的更新都帶來了巨大的工作效率提升。的確,我們需要花些時間來搞懂那些看起來亂糟糟的新概念,但搞明白之后——坦白地講,在有人帶的情況下,這並不是什么難事——我們就能用非常少的代碼來換取先前技術大量代碼才能獲得的功能。似乎代碼量是開發團隊中一切糟糕問題的罪魁禍首,so,明白了?
對於WPF是如何減少代碼量的,后面有一個例子。但WPF絕不是一個只能幫我們減少代碼量的家伙,更重要的是,它還能幫我們把程序的界面和功能邏輯近乎徹底地剝離——in a nutshell,把你的程序變成一只香蕉或者橘子——“皮”是可以從“瓤”上剝下來的,一旦某天用戶說:“這個橘子能不能看起來像是個香蕉?”你就可以為你的橘子瓣兒裹上漂亮的進口香蕉皮再開出一個更漂亮的價碼。
3/ WPF是怎樣做到的
使用WPF技術開發產品,程序的“皮”,也就是UI,是使用XAML語言來“畫”出來的;而程序的“瓤”,也就是功能邏輯,可以由程序員來選擇使用C#/VB.NET/C++.NET等托管語言來實現。
對於程序員們來說,C#/VB.NET/C++什么的已經是耳熟能詳。XAML是什么呢?簡言之,XAML(讀音為“zamel”,近似於“咋沒有”)是XML語言的一個衍生物,它的語法基本上與XML語言完全一致;它的功能就是專門用來設計和實現程序的UI;它看起來和HTML語言非常像,無論你是程序員還是美工人員,只要你設計過網頁,那學習XAML對你來說都是小菜一碟兒。而且,XAML可不像HTML和XHTML那樣只能呆在Web開發領域——XAML對於Web開發和桌面開發是“通吃”的,從Web程序改成桌面程序或者反過來,所付出的工作量驚人的小,而且由於UI與邏輯完全分離,邏輯代碼幾乎不用改動——這意味着兩種開發的邊界漸漸消失,兩類設計人員和程序員將會染指“彼岸”、拿到更多的項目、掙更多的錢。
WPF之前,無論是Win32 API編程、使用MFC編程還是Windows Form編程,美工(設計人員)設計出來的界面都需要由程序員使用Visual Studio來實現。程序員不是美工,VS也干不過PS……越俎代庖永遠是高效分工的大敵。如今,為了支持WPF程序設計,微軟推出了專門的、使用XAML語言進行UI設計工具——Expression Studio,使用它就像使用PhotoShop和Dreamweaver一樣,設計出來的結果保存為XAML文件,程序員可以直接拿來用;當UI有變更時,程序員只消用新版XAML文件替換舊版即可。
2、基礎
1/
選擇“菜單—》文件—》新建—》項目”。如下圖

2/ 在“新建項目”對話框中選擇“WPF應用程序”,修改名稱為WpfApp1,然后點擊“確定”按鈕,便成功創建了一個“WPF應用程序”。新創建的項目所引用的公共類庫如下。如下圖。(“WPF應用程序”會在“引用”里面自動添加下圖中所示的 PresentationCore、PresentationFramework、WindowsBase三大核心程序集)。

3/ WpfApp1項目的生成的文件結構。如下圖。

4/ 在App.xaml中的“StartupUri”屬性可以指定項目運行時的啟動窗體。如下圖中“StartupUri=”MainWindow.xaml””,還可以定義我們需要的系統資源以及引入程序集等。如下圖。


5/
在MainWindow.xaml的設計窗體中我們可以修改Title。還可以設置MainWindow的屬性和添加事件。完成了這些設置以后,我們就可以對窗體添加內容了,如下圖。我在這個窗體中添加了一個ListView、兩個WrapPanel、兩個Button等。

6/
在WPF的xmal文件中還可以添加如下資源。如下圖。

--From http://www.cnblogs.com/chillsrc/p/4464023.html
3、開發
1/ VS中文件-新建-項目-WPF應用程序
2/ 左上角工具箱中有很多組件可以直接拖拽使用
3/ 雙擊組件,進入腳本功能編輯界面,如按鈕:
private void Button_Click_1(object sender,EventArgs e)
{
MessageBox.Show("Wonderful!");
}
4/ ctrl+F5 編譯運行
5/ 總代碼:
<Window x:Class="鱷魚啊鱷魚.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.Background>
<LinearGradientBrush>
<GradientStop Offset="0" Color="Blue"></GradientStop>
<GradientStop Offset="0.5" Color="LightBlue"></GradientStop>
</LinearGradientBrush>
</Grid.Background>
<TextBox Height="23" Margin="10,10,10,0" Name="textBox1" VerticalAlignment="Top" Text="{Binding ElementName=slider1, Path=Value, UpdateSourceTrigger=PropertyChanged}" TextChanged="textBox1_TextChanged" />
<Slider Height="21" Margin="10,40,10,0" Name="slider1" VerticalAlignment="Top" Maximum="100" />
<Button Content="Button" HorizontalAlignment="Left" Height="50" Margin="48,172,0,0" VerticalAlignment="Top" Width="138" Click="Button_Click"/>
<Label Content="當前時間--" HorizontalAlignment="Left" Height="66" Margin="263,172,0,0" VerticalAlignment="Top" Width="204"/>
<Button Content="Button1" HorizontalAlignment="Left" Height="52" Margin="48,258,0,0" VerticalAlignment="Top" Width="125" Click="Button_Click_1"/>
<CheckBox Content="CheckBox" HorizontalAlignment="Left" Height="39" Margin="263,245,0,0" VerticalAlignment="Top" Width="109" Checked="CheckBox_Checked"/>
<ComboBox HorizontalAlignment="Left" Margin="335,91,0,0" VerticalAlignment="Top" Width="120" SelectionChanged="ComboBox_SelectionChanged"/>
</Grid>
</Window>
前后都是一樣的,套路;
效果:
