1.什么是WPF

WPF(Windows Presentation Foundation)是一个基于.net平台的c/s客户端,利用矢量的呈现引擎UI框架

优势:

WPF最大优势是可以快速构建项目从而达到缩短项目周期的目的,深受很多中小型企业欢迎,尤其在医疗、工业、金融、硬件、物流、管理系统(ERP)等行业领域。

前景:

近几年随着工业化的进展,国内一些企业的工业系统上位机系统,也逐渐从使用MFC、QT等C++平台,转向了.NET平台,WPF的占比也越来越高。


2.功能

WPF提供Extensible Application Markup Language (XAML)、控件、数据绑定、布局、二维和三维图形、动画、样式、模板、文档、媒体、文本和版式等丰富的功能。

2.1 XAML

XAML(Extensible Application Markup Language)可扩展应用程序标记语言,用于扩展和定位的语法来定义和程序逻辑分离的用户界面,简化编程式上的用户创建过程。

下面是一个包含按钮的窗口的例子:

XAML使用Window元素定义窗口,使用Window 元素的 Title 特性指定窗口的标题栏文本。

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="Window with Button"
Width="250" Height="100">

<Button Name="button">按钮</Button>
</Window>

2.2 WPF 控件

按钮: Button 和 RepeatButton。

数据显示:DataGrid、ListView 和 TreeView。

日期显示和选项: Calendar 和 DatePicker。

对话框: OpenFileDialog、 PrintDialog和 SaveFileDialog。

数字墨迹: InkCanvas 和 InkPresenter。

文档: DocumentViewer、 FlowDocumentPageViewer、 FlowDocumentReader、

FlowDocumentScrollViewer和 StickyNoteControl。

输入: TextBox、 RichTextBox和 PasswordBox。

布局: Border、 BulletDecorator、 Canvas、 DockPanel、 Expander、 Grid、 GridView、

GridSplitter、 GroupBox、 Panel、 ResizeGrip、 Separator、 ScrollBar、 ScrollViewer、

StackPanel、 Thumb、 Viewbox、 VirtualizingStackPanel、 Window和 WrapPanel。

媒体: Image、 MediaElement和 SoundPlayerAction。

菜单: ContextMenu、 Menu和 ToolBar。

导航: Frame、 Hyperlink、 Page、 NavigationWindow和 TabControl。

选项: CheckBox、 ComboBox、 ListBox、 RadioButton和 Slider。

用户信息: AccessText、 Label、 Popup、 ProgressBar、 StatusBar、 TextBlock和 ToolTip。


2.3 布局

Canvas:子控件提供其自己的布局。

DockPanel:子控件与面板的边缘对齐。

Grid:子控件由行和列定位。

StackPanel:子控件垂直或水平堆叠。

VirtualizingStackPanel:子控件在水平或垂直的行上虚拟化并排列。

WrapPanel:当当前行上没有足够的空间时,子控件按从左到右的顺序放置并包装到下一行。


2.4 数据绑定

数据和应用程序UI上的控件绑定起来,数据的变化会自动更新界面所看到的内容。

WPF概述_c#

根据数据流的方向,把数据绑定分为以下几种:

OneWay:仅当源属性发生更改时更新目标属性。

OneWayToSource:在目标属性更改时更新源属性。

OneTime:仅当应用程序启动时或 DataContext 进行更改时更新目标属性。

TwoWay:无论是目标属性还是源属性,只要发生了更改,TwoWay 就会更新目标属性或源属性。

Default:模式根据实际情况来定,如果是可编辑的就是TwoWay,只读的就是OneWay。


2.5 二维与三维图

WPF 提供一个常用矢量绘制的二维形状库,包括视觉效果,如渐变、位图、绘图、用视频绘画、旋转、缩放和倾斜,可以创建可直接绘制、用作画笔或用于剪辑其他形状和控件的自定义形状。

WPF提供了根据应用需求绘制,转换和生成3D图形的功能。它不支持全面的3D游戏开发,但是可以创建3D图形。


2.6 动画

WPF提供了丰富的动画支持,大部分的动画都可以直接通过XAML来呈现,创建动画有故事版、CompositionTarget和DispachTime三种类型。

故事版:该动画适合创建简单的对象位移及直接性质的属性更改。

CompositionTarget:这种动画适合全局属性的时时更改,例如NPC以及地图等全体性的相对位移及属性更改时就要用到它了。

DispachTime:这种动画适合运用在Spirit(角色)的个人动画中,例如角色的移动,战斗等动作。


2.7 样式

WPF引入了样式,对于XAML来说引入的样式就像CSS对HTML的作用;样式是修改View(窗体、控件)样式的主要方式,其作用更改控件的外观。

在StackPanel的资源里定义一个Style。TargetType属性指定样式范围内是StackPanel内的所有TextBlock控件,两个Setter元素用于设置目标控件的特定属性,在本例中为Foreground和FontSize属性。

<Window x:Class="WpfTutorialSamples.Styles.SimpleStyleSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="SimpleStyleSample" Height="200" Width="250">
<StackPanel Margin="10">
<StackPanel.Resources>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Gray" />
<Setter Property="FontSize" Value="24" />
</Style>
</StackPanel.Resources>
<TextBlock>Header 1</TextBlock>
<TextBlock>Header 2</TextBlock>
<TextBlock Foreground="Blue">Header 3</TextBlock>
</StackPanel>
</Window>

WPF概述_WPF_02

2.8 模板

模板应用在View层,它的作用是修改控件的样式、交互、数据展示。

模板主要分为DataTemplate 和 ControlTemplate 两种:

ControlTemplate它决定了控件样子,并开发者可以在原有的控件上扩展内部逻辑。

DataTemplate是数据内容的展示方式,例如:文本还是直观的图形就由它来决定了。