第8章WPF控件全解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
排列或堆叠,将该属性设置为“Horizontal”即可。
【例8-5】演示StackPanel的基本用法。
20
8.2 常用布局控件
画布(Canvas)
Canvas用于定义一个区域,称为画布。在该画布内的所有子元素都用相 对于该区域左上角的坐标位置x和y来定位 ,其常用属性如下。
Canvas.Left和Canvas.Top附加属性:子元素一般内容模型
WPF内容模型
WPF内容模型是指如何组织和布局WPF控件的内容。用XAML描述控件元素时,一 般语法形式为
<控件元素名>
内容模型
</控件元素名>
Text
Text内容模型表示一段字符串。TextBox、PasswordBox都属于Text内容模型。
Xaml: <TextBox Name="textBox1">这是一段文本</TextBox>
18
8.2 常用布局控件
【例8-4】演示如何用Grid构造动态布局。
19
8.2 常用布局控件
堆叠面板(StackPanel)
StackPanel用于将其子元素按纵向或横向顺序排列或堆叠。没有重叠的时 候称为排列,有重叠的时候称为堆叠。常用属性如下。
Orientation属性:排列或堆叠的方向。默认为纵向,如果希望横向
ResizeMode
窗口
SizeToContent
窗口
设置为WidthAndHeight(允许窗口内的内容扩展时 自动调整窗口的大小)可最大程度地提高灵活性
17
8.2 常用布局控件
网格 (Grid)
该控件定义由行和列组成的网格区域,在网格区域内可以放置其他控件,放置的 这些控件都自动作为Grid元素的子元素。是所有动态布局控件中唯一可按比例动 态调整分配空间的控件。 Grid内的子元素中还可以嵌套Grid。子元素使用以下附加属性来定位:
Grid.Row、Grid.Column :指定子元素所在的行和列。在 C#代码中,使用
Grid.SetRow方法和Grid.SetCol方法指定子元素所在的行和列。 Grid.RowSpan:使该子元素跨多行。例如 Grid.RowSpan="2"表示跨2行。 Grid.ColumnSpan:使该子元素跨多列。例如 Grid. ColumnSpan ="2"表示跨2列。
5
8.1 控件模型和内容模型
WPF控件模型
内边距(Padding)
Padding属性用于控制元素内部与其子元素或文本之间的间距,其用法和Margin 属性的用法相似。
【例8-1】演示控件模型中外边距、内边距以及边框的含义及用法。
6
8.1 控件模型和内容模型
WPF控件模型
水平对齐(HorizontalAlignment)
3
8.1 控件模型和内容模型
WPF控件模型
Top(上) Margin(外边距) Border(边框) padding(内边距)
Left (左) 内容
Right (右)
Bottom(下)
内容:指显示控件内容的区域,可以是文本、图像或其他控件元素。
Padding:内边距。即边框和内容之间的矩形环区域。 边框:即内边距和外边距之间的黑色矩形环区域。 Margin:外边距。指边框和图中虚线包围的矩形环区域,表示该控件和其他 控件之间的距离。
12
Ch8 WPF控件
8.1 控件模型和内容模型 8.2 常用布局控件 8.3 常用基本控件
8.4 菜单、工具条和状态条
8.5 图像和GIF动画
8.6 其他WPF控件
13
8.2 常用布局控件
WPF的布局分类
绝对定位布局
绝对定位布局是指子元素使用相对于布局元素左上角(0,0)的坐标(x、 y)来描述。在这种布局模式下,当调整布局元素的大小(Width、
C#:
textBox1.Text="这是一段文本“;
9
8.1 控件模型和内容模型
WPF内容模型
Content
Content内容模型表示该内容是一个对象,该对象可以是文本、图像及其他元素。 像Button、RepeatButton、CheckBox、RadioButton及Image都属于该模型。
另一种是按照“左、上、右、下”的顺序,用4个值分别描述四个方向的外边距。 例如下面的代码表示Button2按钮的左、上、右、下的外边距分别是0、10、0、 10
XAML: <Button Name="Button2" Margin="0,10,0,10"> 按钮2</Button> C#: Button2.Margin = new Thickness(0, 10, 0, 10);
动态定位布局
WPF应用程序中的所有元素周围都围绕着一个边界框,当布局系统定位元 素时,实际上是在定位包含该元素的矩形边界框或布局槽。由下图可知父 面板内的某个子元素分配的区域实际上远远大于该子元素,每个子元素的 布局槽大小实际上是由其父容器来决定的
15
8.2 常用布局控件
WPF的布局分类
动态定位布局
Xaml: <Button Name="button1" Content=" 这是一个按钮"/>
HeaderedContent HeaderedContent表示其内容模型为1个标题和1个内容项,二者都是任意对象。 TabItem是一个特殊类型的内容控件,利用它可设置内容和标题。
10
8.1 控件模型和内容模型
(1)如果设计前已经知道由哪些元素来组成界面,比如静态不 变的界面,则一般用XAML来实现,这种方式的优点是可直观地 看到界面的效果,缺点是无法动态改变元素个数。 (2)如果元素的个数由其他因素决定,比如游戏、动态显示的 复杂界面,则一般用C#代码来实现,这种方式的优点是灵活,缺 点是只能在运行时才能看到设计的效果。
WPF控件有一个共同的基本模型,称为控件模型和内容模型。 内置的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 内置的控件
有两种方式让Grid自动调整行高和列宽。
在Grid的行定义或列定义的开始标记内,用 Auto表示行高或列宽,此时它会自动显示
单元格内子元素包含的全部内容,即使内容改变也是如此。 在Grid的行定义或列定义的开始标记内,用星号( n*)根据加权比例分配网格的行和 列之间的可用空间。当n为1时,可直接用一个星号(*)表示。
教育部普通高等教育十二五国家级规划教材
《C#程序设计及应用教程》第3版
(包括简化版:《C#程序设计教程》第3版)
第8章 WPF控件
Ch8 WPF控件
8.1 控件模型和内容模型 8.2 常用布局控件 8.3 常用基本控件
8.4 菜单、工具条和状态条
8.5 图像和GIF动画
8.6 其他WPF控件
2
8.1 控件模型和内容模型
Height)时,子元素的坐标位置不会发生变化,所以称为绝对定位布局。
动态定位布局
动态定位布局是指布局元素内的子元素位置以及排列顺序随着页面或窗口 的大小变化动态调整。在WPF中,除了Canvas布局元素内的子元素采用 绝对布局外,其他布局元素内的元素都是采用动态布局。
14
8.2 常用布局控件
WPF的布局分类
媒体
菜单 导航 选择 用户信息
Image、MediaElement、SoundPlayerAction
ContextMenu、Menu、ToolBar Frame、Hyperlink、Page、NavigationWindow、TabControl CheckBox、ComboBox、ListBox、RadioButton、Slider AccessText、Label、Popup、ProgressBar、StatusBar、TextBlock、ToolTip
WPF内容模型
Items
Items表示一个项集合。可以通过设置控件的Items属性来直接填充该控件的每一 项。
HeaderedItems
该内容模型表示一个标题和一个项集合。
Children
该内容模型表示一个或多个子元素。
11
8.1 控件模型和内容模型
WPF应用程序中创建控件对象的方式
在WPF应用程序中,有两种创建控件对象的方式。
如果子元素进行旋转后超出了分配给它的布局槽,如果布局槽的大小不变, 布局系统将仅显示布局槽内的部分,而布局槽外的部分将被自动裁剪掉,
为了让元素旋转时不被裁剪,在实际开发中,应该尽量使用动态布局。
16
8.2 常用布局控件
WPF的布局分类
动态调整控件大小时常用的属性
属性 Width、Height MinWidth、MinHeight MaxWidth、MaxHeight 值 double、Auto、 * double double、Infinity NoResize CanMinimize CanResize CanResizeWithGrip Manual Width Height WidthAndHeight 适用范围 窗口、控件 窗口、控件 窗口、控件 对动态调整大小的说明 将控件放在Grid内,并使用自动(Auto)和星号(* )调整网格大小可最大程度地提高灵活性 设置为0可最大程度地提高灵活性 设置为Infinity可最大程度地提高灵活性 默认为CanResize(允许用户调整窗口的大小),这 样可最大程度地提高灵活性
【例8-2】演示如何将HorizontalAlignment属性应用于Button元素。
7
8.1 控件模型和内容模型
WPF控件模型
垂直对齐(VerticalAlignment)
VerticalAlignment属性描述元素相对于其父元素的垂直对齐方式。可能的取值分 别为Top(顶端对齐)、Center(中心对齐)、Bottom(底端对齐)和Stretch (默认,垂直拉伸)。 【例8-3】演示了如何将VerticalAlignment属性应用于Button元素。
4
8.1 控件模型和内容模型
WPF控件模型
外边距(Margin) 在XAML中,一般用特性语法来描述Margin属性。常用有两种形式,一种是用一 个值来描述,例如下面的代码表示按钮周边四个方向的外边距都是10。
XAML: <Button Name="Button1" Margin="10"> 按钮1</Button> C#: Button1.Margin = new Thickness(10);
Canvas.Top附加属性指定其相对于Canvas容器左上角的位置,Canvas.Left 表示x坐标,Canvas.Top表示y坐标。
Canvas.ZIndex附加属性:该附加属性也叫Z顺序,即三维空间中沿Z轴排列
的顺序。利用该附加属性可设置Canvas内子元素重叠的顺序,该值可以是 正整数,也可以是负整数,默认值为0。ZIndex值大的元素会盖住ZIndex值 小的元素。
HorizontalAlignment属性声明元素相对于其父元素的水平对齐方式 。
成 员 Left、Center、 Right 说 明 子元素在其父元素内左端对齐、中心对齐、右端对齐 拉伸子元素至父元素的已分配空间。如果声明了Width和Height,则Width和 Height优先
Stretch(默认)