本月作了一個小講座,主要是WPF的開發技術介紹,因爲是上班時間,去聽的人很少,但對於本身來講至少是又鞏固了Winform的知識,抽時間寫一篇文章,在此分享給你們,有什麼寶貴建議你們也能夠提給我,謝謝。編程
本次講座主要分三個模塊:框架
1.WPF的歷史ide
2.WPF的特性spa
3.WPF的開發流程code
首先,讓咱們開始慢慢講來:orm
1.WPF的歷史視頻
說到WPF的歷史,咱們能夠從Winform的歷史談起,Winform的歷史分爲四個階段,第一個階段是在85到91年,C搭配Windows API的出現,這門技術如今看來雖然很古老,可是如今在不少地方,好比在咱們的驅動、顯卡比較底層的應用上或者Winform第三方控件,視頻播放器,編譯解碼的時候都會調用到驅動;第二個階段在92到01年,MFC的出現,MFC是歷史上最多用的Windows編程方法,主要偏向於用戶對界面美觀等要求不高的狀況,MFC速度比較快,在考慮到速度方面仍是會有不少人用,雖然硬件技術的發展使得咱們能夠用Windiws Form或者WPF的速度遇上MFC,可是一些傳統的公司由於已經用慣了MFC。。。第三個階段就是02到06年,C#搭配Windows Form的出現,Windows Form要比MFC好,可是當時IT技術的關注點是Web上,因此當時雖然你們都在用.NET,可是真正的主角是ASP.NET(固然ASP.NET代替了ASP),而不是Windows Form,WIndows Form還沒熬出頭WPF就出現了。第四個階段在07年至今,咱們的WPF的出現,它和MFC或者Windows Form相比,功能類似,可是它們有着互不兼容的.NET API,他們偏向於傳統的應用,很相似於Java Swing,沒有考慮Web/Markup的需求,可是WPF考慮到了,咱們的siverlight就是誕生於WPF。xml
2.WPF的特性blog
使得美工和程序能夠實現分離,使得定製化主題/外觀/行爲更加方便也易於維護;事件
使得MVVM得以實現,成爲「屬性驅動」,而非WinForm的「事件驅動」;屬性的更改能夠自動得到,甚至經過轉換器觸發各類展現/行爲的變動;
MVVM、MVC、MVP是目前比較流行的三大開發框架,MVVM主要用來和咱們的WPF一塊兒來作Windows的開發;
事件驅動是一種被動的,必須由用戶的觸發;而屬性驅動是一種主動的,一種路由機制,只要數據的變動就可層層觸發。
WPF(Windows Presentation Fundation)顧名思義其強大的圖形化API爲程序提供了超乎想象的圖形效果。
WPF的開發流程
效果圖:
源碼:
1 <Window x:Class="WpfApplicationDemo.Window1" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 Title="WPF Demo" Height="322" Width="563"> 5 <Style TargetType="Button"> 6 <Setter Property="Margin" Value="6"></Setter> 7 <Setter Property="Padding" Value="4"></Setter> 8 <Setter Property="MinWidth" Value="50"></Setter> 9 <Setter Property="Width" Value="50"></Setter> 10 <Setter Property="Height" Value="30"></Setter> 11 </Style> 12 </Window.Resources> 13 14 <Border CornerRadius="10" 15 BorderBrush="Gray" 16 BorderThickness="3" 17 Background="BlueViolet" 18 Margin="24" 19 Padding="4"> 20 <Border.Effect> 21 <DropShadowEffect Color="Gray" 22 Opacity=".50" 23 ShadowDepth="16" /> 24 </Border.Effect> 25 <Window.Resources> 26 <Style TargetType="Label"> 27 <Setter Property="Margin" Value="4"></Setter> 28 <Setter Property="Foreground" Value="Orange"></Setter> 29 <Setter Property="HorizontalAlignment" Value="Center"></Setter> 30 </Style> 31 <Style TargetType="TextBox"> 32 <Setter Property="Margin" Value="9"></Setter> 33 <Setter Property="HorizontalAlignment" Value="Left"></Setter> 34 <Setter Property="Width" Value="250"></Setter> 35 </Style> 36 <Style TargetType="PasswordBox"> 37 <Setter Property="Margin" Value="4"></Setter> 38 <Setter Property="HorizontalAlignment" Value="Left"></Setter> 39 </Style> 40 <Style TargetType="Button"> 41 <Setter Property="Margin" Value="5"></Setter> 42 <Setter Property="Width" Value="50"></Setter> 43 <Setter Property="Height" Value="28"></Setter> 44 <Setter Property="Foreground" Value="White"></Setter> 45 <Setter Property="Background" Value="Black"></Setter> 46 <Setter Property="BorderBrush" Value="Orange"></Setter> 47 </Style> 48 </Window.Resources> 49 <Border CornerRadius="10" 50 BorderBrush="Orange" 51 BorderThickness="5" 52 Background="Black" 53 Margin="25" 54 Padding="1"> 55 <Border.Effect> 56 <DropShadowEffect Color="Brown" 57 Opacity=".50" 58 ShadowDepth="16" /> 59 </Border.Effect> 60 <Grid> 61 <Grid.ColumnDefinitions> 62 <ColumnDefinition Width="80"/> 63 <ColumnDefinition Width="100"/> 64 <ColumnDefinition Width="*" /> 65 </Grid.ColumnDefinitions> 66 <Grid.RowDefinitions> 67 <RowDefinition Height="53"/> 68 <RowDefinition Height="45"/> 69 <RowDefinition Height="45"/> 70 <RowDefinition/> 71 </Grid.RowDefinitions> 72 <Label Grid.Column="1" 73 Grid.Row="0" 74 Grid.ColumnSpan="2" 75 FontSize="18" 76 FontWeight="Bold" 77 Margin="7">Please Login To Access This Application</Label> 78 <Label Grid.Column="1" 79 Grid.Row="1">User Name</Label> 80 <TextBox Grid.Column="2" 81 Grid.Row="1" 82 ToolTip="Enter Your User Name" 83 Name="txtUserName"> 84 <TextBox.Effect> 85 <DropShadowEffect Color="Brown" 86 Opacity=".50" 87 ShadowDepth="9"/> 88 </TextBox.Effect> 89 </TextBox> 90 <Label Grid.Column="1" 91 Grid.Row="2">Password</Label> 92 <TextBox Grid.Column="2" 93 Grid.Row="2" 94 ToolTip="Enter Your Password" 95 Name="txtPassword"> 96 <TextBox.Effect> 97 <DropShadowEffect Color="Brown" 98 Opacity=".50" 99 ShadowDepth="9"/> 100 </TextBox.Effect> 101 </TextBox> 102 <StackPanel Grid.Column="2" 103 Grid.Row="3" 104 Margin="5" 105 HorizontalAlignment="Center" 106 Orientation="Horizontal"> 107 <Button Name="btnCancel" 108 IsCancel="True" 109 Content="Cancel" 110 Click="BtnCancel_Click" BorderBrush="#FF707070"> 111 <Button.Effect> 112 <DropShadowEffect Color="Brown" 113 Opacity=".50" 114 ShadowDepth="9"/> 115 </Button.Effect> 116 </Button> 117 <Button Name="btnLogin" 118 IsDefault="True" 119 Content="Login" 120 Click="btnLogin_Click"> 121 <Button.Effect> 122 <DropShadowEffect Color="Brown" 123 Opacity=".50" 124 ShadowDepth="9" /> 125 </Button.Effect> 126 </Button> 127 </StackPanel> 128 <Label Grid.Column="0" Grid.Row="0" 129 VerticalAlignment="Center" 130 HorizontalAlignment="Center" 131 FontSize="25" 132 Foreground="White">MOX 133 <Label.Effect> 134 <DropShadowEffect Color="White" 135 Opacity=".50" 136 ShadowDepth="9"/> 137 </Label.Effect> 138 </Label> 139 </Grid> 140 </Border> 141 </Window>