WPF 系统学习WPF

通过对上一篇"认识WPF"的学习,我们已经对WPF有了一个基本的了解,想要学习WPF则需要我们深入系统地了解WPF的系统架构和运行方式。接下来让我们跨入WPF学习的大门吧!

系统学习WPF,需要我们从一下技术点入手:

  • XAML结构

  • 控件和布局

  • Banding(绑定)

  • 依赖属性和附加属性

  • 路由和事件

  • 命令

  • 资源

  • 模板

  • 绘图和动画

  1. XAML文档结构

XAML是声明性语言,在Xaml上声明一个Button,界面上就会显示一个按钮的实体控件。Xaml看起来是平面的,但其实它是按照树形结构排列的,树形结构非常重要,消息可以通过树形结构从树根传到每片树叶,我们也可以通过这颗树按名称查找元素、获取父/子节点等操作。WPF基类库中为我们准备了VisualTreeHelper(逻辑树帮助类,查询到对象)和LogicalTreeHelper(可视树帮助类,查询到对象的内部结构)两个助手类,包含用于操作这颗树的方法。Xaml文件和后台cs文件都使用了partial(部分,可以把一个类拆分多处使用)关键字,使得它们相互分离有相互依存。Xaml树形结构如下图所示:

WPF 系统学习WPF_第1张图片

    
        
            
            
        
        
  1. 控件和布局

WPF六种常用控件:布局控件、内容控件、带标题内容控件、条目控件、带标题条目控件和特殊内容控件(如:TextBox,TextBlock,Image等)。

WPF 系统学习WPF_第2张图片

WPF中的布局元素:

  • Grid:网格。类似HTML中的Table。

  • StackPanel:栈式面板。竖直或水平排成一条直线。

  • Canvas:画布。绝对坐标定位,类似于Windows Form的布局。

  • DockPanel:泊靠式面板。是具有停靠功能的布局控件,其内部控件根据附加属性指定停靠位置。

  • WrapPanel:自动折行面板。排满一行自动折行,类似HTML中的流式布局。

Gird(网格控件):

RowDefinitions : 拆分行,ColumnDefinitions:拆分列.

Grid.Column:指定所属行,默认为0,Grid.Row :指定所属列,默认为0

指定行(列)的高度(宽度):

固定值:通过制定一个数值,上图中的1 。

自适应:通过Auto关键字指定,根据内部控件自适应。

平分值:通过 数字* 的格式指定,公式 = (总宽度 – 固定值 – 自适应) / *数量之和 * * 数量

UniformGrid:在网格(网格中的所有单元格都具有相同的大小)中排列内容的方法

StackPanel:

Orientation 排列方法,垂直还是水平:

  • Horizontal :按照水平排列

  • Vertical(默认) :按照垂直排列

FlowDirection 排列方向:

  • LeftToRight(默认):从左向右排列

  • RightToLeft:从右向左排列

Canvas:

用于定义一个区域,可在其中使用相对于 Canvas 区域的坐标以显式方式来定位子元素(如:Canvas.Left="25")

DockPannel:

停靠的长度或宽度计算顺序依次为左右上下中(如:DockPannel.Dock="Right"),最后一个控件的数量自适应剩余空间。

WrapPanel:

自动折行面板,WrapPanel 跟StackPanel有点类似,不同之处在于其根据内部控件大小自动换行。

  1. Banding(绑定)

  1. 依赖属性和附加属性

  1. 路由和事件

  1. 命令

  1. 资源

  1. 模板

  1. 绘图和动画

未完待续...

你可能感兴趣的:(WPF,wpf)