WPF開發技術介紹


本月做了一個小講座,主要是WPF的開發技術介紹,由於是上班時間,去聽的人不多,但對於自己來說至少是又鞏固了Winform的知識,抽時間寫一篇文章,在此分享給大家,有什么寶貴建議大家也可以提給我,謝謝。

本次講座主要分三個模塊:

1.WPF的歷史

2.WPF的特性

3.WPF的開發流程

首先,讓我們開始慢慢講來:

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。

2.WPF的特性

  • XAML的引入

使得美工和程序可以實現分離,使得定制化主題/外觀/行為更加方便也易於維護;

  • 強大的 “數據綁定”功能

使得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>
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM