zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Azure 虚拟机安全加固整理
    AzureARM 使用 powershell 扩容系统磁盘大小
    Azure Linux 云主机使用Root超级用户登录
    Open edX 配置 O365 SMTP
    powershell 根据错误GUID查寻错误详情
    azure 创建redhat镜像帮助
    Azure Powershell blob中指定的vhd创建虚拟机
    Azure Powershell 获取可用镜像 PublisherName,Offer,Skus,Version
    Power BI 连接到 Azure 账单,自动生成报表,可刷新
    Azure powershell 获取 vmSize 可用列表的命令
  • 原文地址:https://www.cnblogs.com/CocoWang/p/3729837.html
Copyright © 2011-2022 走看看