WPF基础
前段时间,学了WPF,发现挺有趣的,今天,我们就来讲下WPF吧。WPF是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。它所用到的界面是XAML,它和我们之前学的C#的XML有挺大的不同。XAML有三个顶级元素。Window(窗口)、UserControl(用户控件,布局的时候像窗体那样布局就可以了)。Page(页)把窗体以网页的形式展现。而XAML页面里只能有一个顶级元素。而顶级元素里面只能有一个子元素。
1、应用程序界面设计中,合理的元素布局至关重要,它可以方便用户使用,并将信息清晰合理地展现给用户。WPF提供了一套功能强大的工具-面板(panel),来控制用户界面的布局。你可以使用这些面板控件来排布元素。
WPF用于布局的面板主要有6个:StackPanel(栈面板)、WrapPanel(环绕面板)、DockPanel(停靠面板)、Canvas(画 布)、Grid(网格面板)和UniformGrid(均布网格)
WrapPanel布局面板将各个控件从左到右按照行或列的顺序罗列,当长度
Orientation 设置的值 <!--Horizontal 是垂直方向 Vertical 横方向-->
DockPanel.Dock 上下左右
在<Canvas></Canvas>标签,如果将ClipToBounds属性设为true,在设计界面将会对子元素的超出部分进行裁剪:
2、XAML常用的五个布局元素
Grid:网格。可以定义行和列并通过行列的数量、行高列宽来调整控件的布局。近似Html中的table。
StackPanel:栈式面板。可将包含的元素在水平或垂直方向排成一条线,当移除一个元素后,后面的元素会自动向前填充空缺。
Canvas:画布。内部元素可以使用以像素为单位的绝对坐标进行定位,类似于WindowsForm的布局方式。
DockPanel:泊靠式面板。内部元素可以选择泊靠的方向(上下左右),类似于Html中的流式布局。
Grid:可以定义任意数量的行和列,非常灵活。
行的高度和列的宽度可以使用绝对值、相对比例或自动调整的方式进行精确设定,并可以设置最大和最小值。
内部元素可以设置自己所在的行和列,还可以设置自己纵向跨几行,横向跨几列。
可以设置Children元素的对齐方向。
3、基于以上这些特点,Grid的使用场合有:
UI布局的大框架设计
大量UI元素需要成行或者成列对齐的情况
UI尺寸改变的时候,元素需要保留固有的宽度和高度比例。
UI后期可以有较大的变更或扩展。
- WPF的依赖属性:什么是依赖属性?
依赖属性就是一种可以自己没有的值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。
将所有的属性都设置为依赖属性并不总是正确的解决方案,具体取决于其应用场景。
(1)希望可在样式中设置属性
(2)希望属性支持数据绑定
(3)希望可使用动态资源引用设置属性
(4)希望从元素树中的父元素自动继承属性值
(5)希望属性可进行动画处理
(6)希望属性系统在属性系统、环境或用户执行的操作或者读取并使用样式更改了属性以前的值时报告
(7)希望使用已建立的、WPF进程也使用的元数据约定,例如报告更改属性值时是否要求布局系统重新编写元素的可视化对象。
Trigger对应的两大属性就是附加属性和依赖属性。
- 什么是路由事件
(1)路由事件是一种可以针对元素树中的多个侦听器而不是仅仅针对引发该事件的对象调用处理程序的事件。路由器是一个CLR事件。
(2)路由事件与一般事件的区别在于:路由事件是一种元素树的事件,当路由器事件触发后,它可以向上或向下遍历可视树和逻辑树,他用一种简单而持久的方式在每个元素上触发,而不需要任何定制的代码(如果用传统的方式实现一个操作,执行整个事件的调用则需要执行代码将事件串联起来)。
(3)路由事件的路由策略:
所谓的路由策略就是指:路由事件实现遍历元素的方式。
- 形状绘图
形状是一个2D绘图类
位于System.Windows.Shape空间内
包括最常用的绘图对象
Line直线
Rectangle矩形
Ellipse椭圆
Polygon多边形
Path路径
图形对象共有属性
Stroke:说明如何绘制图形的轮廓,即所使用的画刷
StrokeThickness:说明图形轮廓的粗细度
Fill:说明如何绘制图形的内部
指定图形的坐标位置和顶点的数据属性,以及设备无关的像素来度量
图形绘图与几何绘图区别
图形对象可以独立存在,可以独立绘制出具体需要的图形
几何图形对象没有具体的形体,它需要依赖于某一对象元素而存在,不能直接呈现在画板上
几何绘图包括5种对象
LineGeometry:确定两点绘制一条直线
RectangleGeometry:绘制矩形的集合图形
EllipseGeometry:绘制椭圆形的几何图形
GeometryGroup:组合几何对象,将多个单一的几何对象组合成一个集合对象
PathGeometry:路径几何对象
画刷
所有的UI元素都可以通过画刷的设置改变它们的风格
使用不同的画刷对目标区域进行“绘制”,会有不同的效果
画刷种类:
SolidColorBrush:单色实心画刷
LinearGradienBrush:线性渐变画刷
RadialGradientBrush:径向渐变画刷
ImageBrush:图片画刷
图像简单处理
拉伸图像:通过设置Stretch属性实现图像的拉伸
裁切图像:通过设置Clip属性裁切图像
使用图像输入文字:ImageBrush元素实现使用图像输入文字
以上就是我先学到的WPF的小小内容,期待我们下次的遇见。