




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教育部普通高等教育十二五国家级规划教材教育部普通高等教育十二五国家级规划教材C#程序设计及应用教程程序设计及应用教程第第3版版(包括简化版:(包括简化版:C#程序设计教程程序设计教程第第3版)版)第第8章章 WPF控件控件2Ch8 WPF控件控件8.1 控件模型和内容模型控件模型和内容模型 8.2 常用布局控件常用布局控件 8.3 常用基本控件常用基本控件8.4 菜单、工具条和状态条菜单、工具条和状态条8.5 图像和图像和GIF动画动画8.6 其他其他WPF控件控件38.1 控件模型和内容模型控件模型和内容模型lWPF控件有一个共同的基本模型,称为控件模型和内容模型。控件有一个共同的基本模型,
2、称为控件模型和内容模型。l内置的内置的WPF控件控件 功能分类内置的控件按钮Button、RepeatButton数据显示DataGrid、ListView、TreeView日期显示和选择Calendar、DatePicker对话框OpenFileDialog、PrintDialog、SaveFileDialog数字墨迹InkCanvas、InkPresenter文档DocumentViewer、FlowDocumentPageViewer、FlowDocumentReader、FlowDocumentScrollViewer、StickyNoteControl输入TextBox、RichTe
3、xtBox、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、
4、Page、NavigationWindow、TabControl选择CheckBox、ComboBox、ListBox、RadioButton、Slider用户信息AccessText、Label、Popup、ProgressBar、StatusBar、TextBlock、ToolTip48.1 控件模型和内容模型控件模型和内容模型lWPF控件模型控件模型 内容:指显示控件内容的区域,可以是文本、图像或其他控件元素。内容:指显示控件内容的区域,可以是文本、图像或其他控件元素。Padding:内边距。即边框和内容之间的矩形环区域。:内边距。即边框和内容之间的矩形环区域。边框:即内边距和外边距之间
5、的黑色矩形环区域。边框:即内边距和外边距之间的黑色矩形环区域。Margin:外边距。指边框和图中虚线包围的矩形环区域,表示该控件和其他:外边距。指边框和图中虚线包围的矩形环区域,表示该控件和其他控件之间的距离。控件之间的距离。58.1 控件模型和内容模型控件模型和内容模型lWPF控件模型控件模型外边距(外边距(Margin) 在在XAML中,一般用特性语法来描述中,一般用特性语法来描述Margin属性。常用有两种形式,一种是用一属性。常用有两种形式,一种是用一个值来描述,例如下面的代码表示按钮周边四个方向的外边距都是个值来描述,例如下面的代码表示按钮周边四个方向的外边距都是10。XAMLXAM
6、L:按钮按钮11C#C#:Button1.Margin = new Thickness(10);Button1.Margin = new Thickness(10);另一种是按照另一种是按照“左、上、右、下左、上、右、下”的顺序,用的顺序,用4个值分别描述四个方向的外边距。个值分别描述四个方向的外边距。例如下面的代码表示例如下面的代码表示Button2按钮的左、上、右、下的外边距分别是按钮的左、上、右、下的外边距分别是0、10、0、10XAMLXAML:按钮按钮22C#C#:Button2.Margin = new Thickness(0, 10, 0, 10);Button2.Margin
7、= new Thickness(0, 10, 0, 10);68.1 控件模型和内容模型控件模型和内容模型lWPF控件模型控件模型内边距(内边距(Padding) Padding属性用于控制元素内部与其子元素或文本之间的间距,其用法和属性用于控制元素内部与其子元素或文本之间的间距,其用法和Margin属性的用法相似。属性的用法相似。 【例例8-1】演示控件模型中外边距、内边距以及边框的含义及用法。演示控件模型中外边距、内边距以及边框的含义及用法。 78.1 控件模型和内容模型控件模型和内容模型lWPF控件模型控件模型水平对齐(水平对齐(HorizontalAlignment) Horizont
8、alAlignment属性声明元素相对于其父元素的水平对齐方式属性声明元素相对于其父元素的水平对齐方式 。 【例例8-2】演示如何将演示如何将HorizontalAlignment属性应用于属性应用于Button元素。元素。 成 员说 明Left、Center、Right子元素在其父元素内左端对齐、中心对齐、右端对齐Stretch(默认)拉伸子元素至父元素的已分配空间。如果声明了Width和Height,则Width和Height优先88.1 控件模型和内容模型控件模型和内容模型lWPF控件模型控件模型垂直对齐(垂直对齐(VerticalAlignment) VerticalAlignment
9、属性描述元素相对于其父元素的垂直对齐方式。可能的取值分属性描述元素相对于其父元素的垂直对齐方式。可能的取值分别为别为Top(顶端对齐)、(顶端对齐)、Center(中心对齐)、(中心对齐)、Bottom(底端对齐)和(底端对齐)和Stretch(默认,垂直拉伸)。(默认,垂直拉伸)。 【例例8-3】演示了如何将演示了如何将VerticalAlignment属性应用于属性应用于Button元素。元素。 98.1 控件模型和内容模型控件模型和内容模型lWPF内容模型内容模型 WPF内容模型是指如何组织和布局内容模型是指如何组织和布局WPF控件的内容。用控件的内容。用XAML描述控件元素时,一描述控
10、件元素时,一般语法形式为般语法形式为 内容模型内容模型/ TextText内容模型表示一段字符串。内容模型表示一段字符串。TextBox、PasswordBox都属于都属于Text内容模型。内容模型。XamlXaml: 这是一段文本这是一段文本 C#C#: textBox1.Text=textBox1.Text=这是一段文本这是一段文本“;“;108.1 控件模型和内容模型控件模型和内容模型lWPF内容模型内容模型 Content Content内容模型表示该内容是一个对象,该对象可以是文本、图像及其他元素。内容模型表示该内容是一个对象,该对象可以是文本、图像及其他元素。像像Button、Re
11、peatButton、CheckBox、RadioButton及及Image都属于该模型。都属于该模型。XamlXaml: Button Name=button1 Content=/ HeaderedContent HeaderedContent表示其内容模型为表示其内容模型为1个标题和个标题和1个内容项,二者都是任意对象。个内容项,二者都是任意对象。 TabItem是一个特殊类型的内容控件,利用它可设置内容和标题。是一个特殊类型的内容控件,利用它可设置内容和标题。 118.1 控件模型和内容模型控件模型和内容模型lWPF内容模型内容模型 Items Items表示一个项集合。可以通过设置控件
12、的表示一个项集合。可以通过设置控件的Items属性来直接填充该控件的每一属性来直接填充该控件的每一项。项。HeaderedItems 该内容模型表示一个标题和一个项集合。该内容模型表示一个标题和一个项集合。 Children 该内容模型表示一个或多个子元素。该内容模型表示一个或多个子元素。 128.1 控件模型和内容模型控件模型和内容模型lWPF应用程序中创建控件对象的方式应用程序中创建控件对象的方式 在在WPF应用程序中,有两种创建控件对象的方式。应用程序中,有两种创建控件对象的方式。(1)如果设计前已经知道由哪些元素来组成界面,比如静态不)如果设计前已经知道由哪些元素来组成界面,比如静态不
13、变的界面,则一般用变的界面,则一般用XAML来实现,这种方式的优点是可直观地来实现,这种方式的优点是可直观地看到界面的效果,缺点是无法动态改变元素个数。看到界面的效果,缺点是无法动态改变元素个数。(2)如果元素的个数由其他因素决定,比如游戏、动态显示的)如果元素的个数由其他因素决定,比如游戏、动态显示的复杂界面,则一般用复杂界面,则一般用C#代码来实现,这种方式的优点是灵活,缺代码来实现,这种方式的优点是灵活,缺点是只能在运行时才能看到设计的效果。点是只能在运行时才能看到设计的效果。 13Ch8 WPF控件控件8.1 控件模型和内容模型控件模型和内容模型 8.2 常用布局控件常用布局控件 8.
14、3 常用基本控件常用基本控件8.4 菜单、工具条和状态条菜单、工具条和状态条8.5 图像和图像和GIF动画动画8.6 其他其他WPF控件控件148.2 常用布局控件常用布局控件lWPF的布局分类的布局分类 绝对定位布局绝对定位布局 绝对定位布局是指子元素使用相对于布局元素左上角(绝对定位布局是指子元素使用相对于布局元素左上角(0,0)的坐标()的坐标(x、y)来描述。在这种布局模式下,当调整布局元素的大小()来描述。在这种布局模式下,当调整布局元素的大小(Width、Height)时,子元素的坐标位置不会发生变化,所以称为绝对定位布局。)时,子元素的坐标位置不会发生变化,所以称为绝对定位布局。
15、 动态定位布局动态定位布局动态定位布局是指布局元素内的子元素位置以及排列顺序随着页面或窗口动态定位布局是指布局元素内的子元素位置以及排列顺序随着页面或窗口的大小变化动态调整。在的大小变化动态调整。在WPF中,除了中,除了Canvas布局元素内的子元素采用布局元素内的子元素采用绝对布局外,其他布局元素内的元素都是采用动态布局。绝对布局外,其他布局元素内的元素都是采用动态布局。 158.2 常用布局控件常用布局控件lWPF的布局分类的布局分类 动态定位布局动态定位布局WPF应用程序中的所有元素周围都围绕着一个边界框,当布局系统定位元应用程序中的所有元素周围都围绕着一个边界框,当布局系统定位元素时,
16、实际上是在定位包含该元素的矩形边界框或布局槽。由下图可知父素时,实际上是在定位包含该元素的矩形边界框或布局槽。由下图可知父面板内的某个子元素分配的区域实际上远远大于该子元素,每个子元素的面板内的某个子元素分配的区域实际上远远大于该子元素,每个子元素的布局槽大小实际上是由其父容器来决定的布局槽大小实际上是由其父容器来决定的 168.2 常用布局控件常用布局控件lWPF的布局分类的布局分类 动态定位布局动态定位布局如果子元素进行旋转后超出了分配给它的布局槽,如果布局槽的大小不变,如果子元素进行旋转后超出了分配给它的布局槽,如果布局槽的大小不变,布局系统将仅显示布局槽内的部分,而布局槽外的部分将被自
17、动裁剪掉,布局系统将仅显示布局槽内的部分,而布局槽外的部分将被自动裁剪掉,为了让元素旋转时不被裁剪,在实际开发中,应该尽量使用动态布局。为了让元素旋转时不被裁剪,在实际开发中,应该尽量使用动态布局。 178.2 常用布局控件常用布局控件lWPF的布局分类的布局分类 动态调整控件大小时常用的属性动态调整控件大小时常用的属性 属 性值适用范围对动态调整大小的说明Width、Heightdouble、Auto、 *窗口、控件将控件放在Grid内,并使用自动(Auto)和星号(*)调整网格大小可最大程度地提高灵活性MinWidth、MinHeightdouble窗口、控件设置为0可最大程度地提高灵活性
18、MaxWidth、MaxHeightdouble、Infinity窗口、控件设置为Infinity可最大程度地提高灵活性ResizeModeNoResizeCanMinimizeCanResizeCanResizeWithGrip窗口默认为CanResize(允许用户调整窗口的大小),这样可最大程度地提高灵活性SizeToContentManualWidthHeightWidthAndHeight窗口设置为WidthAndHeight(允许窗口内的内容扩展时自动调整窗口的大小)可最大程度地提高灵活性188.2 常用布局控件常用布局控件l网格网格 (Grid)该控件定义由行和列组成的网格区域,在
19、网格区域内可以放置其他控件,放置的该控件定义由行和列组成的网格区域,在网格区域内可以放置其他控件,放置的这些控件都自动作为这些控件都自动作为Grid元素的子元素。是所有动态布局控件中唯一可按比例动元素的子元素。是所有动态布局控件中唯一可按比例动态调整分配空间的控件。态调整分配空间的控件。 Grid内的子元素中还可以嵌套内的子元素中还可以嵌套Grid。子元素使用以下附加属性来定位:。子元素使用以下附加属性来定位:uGrid.RowGrid.Row、Grid.ColumnGrid.Column:指定子元素所在的行和列。在:指定子元素所在的行和列。在C#C#代码中,使用代码中,使用Grid.SetR
20、owGrid.SetRow方法和方法和Grid.SetColGrid.SetCol方法指定子元素所在的行和列。方法指定子元素所在的行和列。uGrid.RowSpanGrid.RowSpan:使该子元素跨多行。例如:使该子元素跨多行。例如Grid.RowSpan=2Grid.RowSpan=2表示跨表示跨2 2行。行。uGrid.ColumnSpanGrid.ColumnSpan:使该子元素跨多列。例如:使该子元素跨多列。例如Grid. ColumnSpan =2Grid. ColumnSpan =2表示跨表示跨2 2列。列。 有两种方式让有两种方式让Grid自动调整行高和列宽。自动调整行高和列
21、宽。u在在GridGrid的行定义或列定义的开始标记内,用的行定义或列定义的开始标记内,用AutoAuto表示行高或列宽,此时它会自动显示表示行高或列宽,此时它会自动显示单元格内子元素包含的全部内容,即使内容改变也是如此。单元格内子元素包含的全部内容,即使内容改变也是如此。u在在GridGrid的行定义或列定义的开始标记内,用星号(的行定义或列定义的开始标记内,用星号(n n* *)根据加权比例分配网格的行和)根据加权比例分配网格的行和列之间的可用空间。当列之间的可用空间。当n n为为1 1时,可直接用一个星号(时,可直接用一个星号(* *)表示。)表示。198.2 常用布局控件常用布局控件【
22、例例8-4】演示如何用演示如何用Grid构造动态布局。构造动态布局。 208.2 常用布局控件常用布局控件l堆叠面板(堆叠面板(StackPanel) StackPanel用于将其子元素按纵向或横向顺序排列或堆叠。没有重叠的用于将其子元素按纵向或横向顺序排列或堆叠。没有重叠的时候称为排列,有重叠的时候称为堆叠。常用属性如下。时候称为排列,有重叠的时候称为堆叠。常用属性如下。uOrientationOrientation属性:排列或堆叠的方向。默认为纵向,如果希望横向属性:排列或堆叠的方向。默认为纵向,如果希望横向排列或堆叠,将该属性设置为排列或堆叠,将该属性设置为“Horizontal”“Ho
23、rizontal”即可。即可。 【例例8-5】演示演示StackPanel的基本用法。的基本用法。 218.2 常用布局控件常用布局控件l画布(画布(Canvas) Canvas用于定义一个区域,称为画布。在该画布内的所有子元素都用相用于定义一个区域,称为画布。在该画布内的所有子元素都用相对于该区域左上角的坐标位置对于该区域左上角的坐标位置x和和y来定位来定位 ,其常用属性如下。,其常用属性如下。uCanvas.LeftCanvas.Left和和Canvas.TopCanvas.Top附加属性:子元素一般使用附加属性:子元素一般使用Canvas.LeftCanvas.Left和和Canvas.
24、TopCanvas.Top附加属性指定其相对于附加属性指定其相对于CanvasCanvas容器左上角的位置,容器左上角的位置,Canvas.LeftCanvas.Left表示表示x x坐标,坐标,Canvas.TopCanvas.Top表示表示y y坐标。坐标。uCanvas.ZIndexCanvas.ZIndex附加属性:该附加属性也叫附加属性:该附加属性也叫Z Z顺序,即三维空间中沿顺序,即三维空间中沿Z Z轴排列轴排列的顺序。利用该附加属性可设置的顺序。利用该附加属性可设置CanvasCanvas内子元素重叠的顺序,该值可以是内子元素重叠的顺序,该值可以是正整数,也可以是负整数,默认值为
25、正整数,也可以是负整数,默认值为0 0。ZIndexZIndex值大的元素会盖住值大的元素会盖住ZIndexZIndex值值小的元素。小的元素。uClipToBoundsClipToBounds属性:当绘制内容超出属性:当绘制内容超出CanvasCanvas范围时,范围时,truetrue表示超出的部分表示超出的部分被自动剪裁掉,被自动剪裁掉,falsefalse表示不剪裁。表示不剪裁。 228.2 常用布局控件常用布局控件【例例8-6】演示演示Canvas的基本用法。的基本用法。 238.2 常用布局控件常用布局控件l画布(画布(Canvas) Canvas的优点是执行效率高,缺点是其子元素
26、无法动态定位,也无法自的优点是执行效率高,缺点是其子元素无法动态定位,也无法自动调整大小。动调整大小。对于窗口、页面或者其中的一部分区域来说,以下情况应该使用绝对定位对于窗口、页面或者其中的一部分区域来说,以下情况应该使用绝对定位布局:布局:u当区域内只有一个图像或图形子元素时,应该使用绝对定位布局。当区域内只有一个图像或图形子元素时,应该使用绝对定位布局。u当当C#C#代码中需要使用此区域内的子元素坐标位置时,应该使用绝对代码中需要使用此区域内的子元素坐标位置时,应该使用绝对定位布局。定位布局。 248.2 常用布局控件常用布局控件l边框(边框(Border) Border用于在某个元素周围
27、绘制边框,或者为某元素提供背景。用于在某个元素周围绘制边框,或者为某元素提供背景。常用属性如下。常用属性如下。uCornerRadiusCornerRadius:获取或设置边框的圆角半径。:获取或设置边框的圆角半径。uBorderThicknessBorderThickness:获取或设置边框的粗细。常用有两种表示形式,一种是用一个值:获取或设置边框的粗细。常用有两种表示形式,一种是用一个值表示(如表示(如BorderThickness=5BorderThickness=5),另一种是按左、上、右、下的顺序表示(如),另一种是按左、上、右、下的顺序表示(如BorderThickness=15,
28、5,15,5BorderThickness=15,5,15,5)。)。uPaddingPadding:获取或设置:获取或设置BorderBorder与其包含的子对象之间的距离。与其包含的子对象之间的距离。【例例8-7】演示演示Border的基本用法。的基本用法。 258.2 常用布局控件常用布局控件l停靠面板(停靠面板(DockPanel) DockPanel用于定义一个区域,并使该区域内的子元素在其上、下用于定义一个区域,并使该区域内的子元素在其上、下、左、右各边缘按水平或垂直方式依次停靠。常用属性如下。、左、右各边缘按水平或垂直方式依次停靠。常用属性如下。uLastChildFillLas
29、tChildFill:该属性默认为:该属性默认为truetrue,表示,表示DockPanelDockPanel的最后一个子元素始终填满剩余的最后一个子元素始终填满剩余的空间。如果的空间。如果DockPanelDockPanel内只有一个子元素,此时由于它同时也是最后一个子元素,内只有一个子元素,此时由于它同时也是最后一个子元素,所以默认会填满所以默认会填满DockPanelDockPanel空间。如果将该属性设置为空间。如果将该属性设置为falsefalse,还必须为最后一个子元,还必须为最后一个子元素显式指定停靠方向。素显式指定停靠方向。uDockPanel.DockDockPanel.D
30、ock:当:当DockPanelDockPanel内有多个子元素时,每个子元素都可以用内有多个子元素时,每个子元素都可以用DockPanel.DockDockPanel.Dock附加属性指定其在父元素中的停靠方式。附加属性指定其在父元素中的停靠方式。uFocusableFocusable:默认情况下,:默认情况下,DockPanelDockPanel不接收焦点。要强制使不接收焦点。要强制使DockPanelDockPanel接收焦点,可接收焦点,可将该属性设置为将该属性设置为truetrue。268.2 常用布局控件常用布局控件【例例8-8】演示演示DockPanel的基本用法。的基本用法。2
31、78.2 常用布局控件常用布局控件l其他常用布局控件其他常用布局控件 BulletDecorator uBulletDecoratorBulletDecorator控件用于将项目符号与其他可视化对象对齐。控件用于将项目符号与其他可视化对象对齐。 Expander Expander控件将其内容作为一个可折叠和展开的窗口控件将其内容作为一个可折叠和展开的窗口,常用属性如下。常用属性如下。uExpandDirectionExpandDirection:折叠窗口的展开方向。注意将该属性设置为:折叠窗口的展开方向。注意将该属性设置为DownDown或或UpUp时时,不要指定该控件的,不要指定该控件的He
32、ightHeight。将该属性设置为。将该属性设置为LeftLeft或者或者RightRight时,不要指定该时,不要指定该控件的控件的WidthWidth。如果设置展开窗口的大小,应在该控件的内容上或在封闭内容。如果设置展开窗口的大小,应在该控件的内容上或在封闭内容的的ScrollViewerScrollViewer上设置大小。上设置大小。uHorizontalContentAlignmentHorizontalContentAlignment和和VerticalContentAlignmentVerticalContentAlignment:设置标题和展:设置标题和展开窗口中内容的对齐方式
33、。开窗口中内容的对齐方式。288.2 常用布局控件常用布局控件l 其他布局控件用法举例其他布局控件用法举例 :298.2 常用布局控件常用布局控件l其他常用布局控件其他常用布局控件 GridSplitter uGridSplitterGridSplitter控件可让用户拖动调整控件可让用户拖动调整GridGrid控件中列或行的大小。控件中列或行的大小。 GroupBox uGroupBoxGroupBox的内容模型是的内容模型是HeaderedContentHeaderedContent,其,其ContentContent和和HeaderHeader属性属性可以是任何类型可以是任何类型 Sep
34、arator u该控件显示一条水平或垂直的分隔线,一般用于分隔该控件显示一条水平或垂直的分隔线,一般用于分隔ListBoxListBox、MenuMenu、ToolBarToolBar等控件中的子项,也可以用它分隔界面中显示的区域。等控件中的子项,也可以用它分隔界面中显示的区域。WrapPanel u该控件按顺序排列子元素,当到达框的边缘时,它会自动将内容显该控件按顺序排列子元素,当到达框的边缘时,它会自动将内容显示在下一行。示在下一行。 308.2 常用布局控件常用布局控件l其他常用布局控件其他常用布局控件 31Ch8 WPF控件控件8.1 控件模型和内容模型控件模型和内容模型 8.2 常用
35、布局控件常用布局控件 8.3 常用基本控件常用基本控件8.4 菜单、工具条和状态条菜单、工具条和状态条8.5 图像和图像和GIF动画动画8.6 其他其他WPF控件控件328.3 常用基本控件常用基本控件l 按钮(按钮(Button、RepeatButton) 按钮(按钮(Button)是最基本的控件之一。按钮上除了显示一般的文字之外,)是最基本的控件之一。按钮上除了显示一般的文字之外,还可以显示图像或者同时显示图像和文字。还可以显示图像或者同时显示图像和文字。RepeatButton和和Button类似,但类似,但RepeatButton从按下按钮到释放按钮从按下按钮到释放按钮的时间段内会自动
36、重复引发其的时间段内会自动重复引发其Click事件。利用事件。利用Delay属性可指定事件的开属性可指定事件的开始时间,利用始时间,利用Interval属性可控制重复的间隔时间。属性可控制重复的间隔时间。 【例例8-9】演示演示Button的基本用法。的基本用法。338.3 常用基本控件常用基本控件l文本块(文本块(TextBlock)和标签()和标签(Label) TextBlock TextBlock用于用于显示可格式化表示的只读文本。显示可格式化表示的只读文本。可以用内置格式可以用内置格式(称为称为Inline)来控制文本来控制文本块的不同部分块的不同部分,分别指定字体系列、样式、粗细或
37、大小。例如:分别指定字体系列、样式、粗细或大小。例如: 文本文本11 文本文本22用用Run来实现这种方式的运行效率不高来实现这种方式的运行效率不高 ,上面的代码可以用下面的方式实现,上面的代码可以用下面的方式实现 TextBlock Margin=10 FontFamily=Arial FontSize=20 Text= 1 / TextBlock Margin=10 FontFamily=Courier New 2 /如果如果TextBlock内包含超链接(内包含超链接(Hyperlink),此时将多个),此时将多个Hyperlink和和Run包含在包含在一个一个TextBlock内比用多
38、个内比用多个TextBlock分别实现的效率高。分别实现的效率高。348.3 常用基本控件常用基本控件l文本块(文本块(TextBlock)和标签()和标签(Label) Label Label的内容模型是的内容模型是Content,因此它还可以包含其他对象。一般将,因此它还可以包含其他对象。一般将Label与与TextBox一起使用,一起使用,用于显示描述性信息、验证信息或输入指示信息。例如:用于显示描述性信息、验证信息或输入指示信息。例如:XAMLXAML:年龄:年龄:C#C#:Label ageLabel = new Label();Label ageLabel = new Label(
39、);ageLabel.Content = ageLabel.Content = 年龄:年龄:;358.3 常用基本控件常用基本控件l文本框文本框(TextBox、PasswordBox、RichTextBox) TextBoxTextBox控件用于显示或编辑纯文本字符。常用属性如下。控件用于显示或编辑纯文本字符。常用属性如下。uTextText:表示显示的文本;:表示显示的文本;uMaxLengthMaxLength:限制用户输入的字符数;:限制用户输入的字符数;uTextWrappingTextWrapping:控制是否自动转到下一行,当其值为:控制是否自动转到下一行,当其值为“Wrap”W
40、rap”时,该控件可自动扩展时,该控件可自动扩展以容纳多行文本;以容纳多行文本;uBorderBrushBorderBrush:边框颜色;:边框颜色;uBorderThicknessBorderThickness:边框宽度,如果不希望该控件显示边框,将其设置为:边框宽度,如果不希望该控件显示边框,将其设置为0 0即可。即可。例如:例如:uTextBox Name=ageTextBox MaxLength=5 Width=60 /TextBox控件的常用事件是控件的常用事件是TextChanged事件。事件。368.3 常用基本控件常用基本控件l文本框文本框(TextBox、PasswordBo
41、x、RichTextBox) PasswordBox PasswordBox控件用于密码输入,常用属性如下。控件用于密码输入,常用属性如下。uPasswordCharPasswordChar属性:掩码,即不论输入什么字符,显示的都是用它指定的字符;属性:掩码,即不论输入什么字符,显示的都是用它指定的字符;uPasswordPassword属性:输入的密码字符串。属性:输入的密码字符串。uPasswordChangedPasswordChanged事件:当密码字符串改变时发生。事件:当密码字符串改变时发生。除了这两个属性之外,其他用法和除了这两个属性之外,其他用法和TextBox相同。例如:相同
42、。例如:uPasswordBox Password=abc PasswordChar=RichTextBox RichTextBox用于复杂格式的文本输入。该控件的内容用用于复杂格式的文本输入。该控件的内容用Blocks属性来设置。属性来设置。Blocks属性是包含属性是包含Paragraph元素的集合。元素的集合。Paragraph元素可以包含如下许多类元素可以包含如下许多类型的元素:型的元素:Inline、InlineUIContainer(可包含(可包含 FrameworkElement 对象,例如对象,例如Image或或Button)、)、Run、Span、Bold、Hyperlink
43、、Italic、Underline等。等。378.3 常用基本控件常用基本控件l文本框文本框(TextBox、PasswordBox、RichTextBox) 注意的问题注意的问题使用使用TextBox、PasswordBox和和RichTextBox时,一定要注意,如果希望检测文时,一定要注意,如果希望检测文本是否发生更改,本是否发生更改,TextBox和和RichTextBox应该使用应该使用TextChanged事件,事件,PasswordBox应该使用应该使用PasswordChanged事件,绝不能使用事件,绝不能使用KeyDown、MouseDown或者或者MouseUp事件来判断
44、。事件来判断。 【例例8-10】演示演示TextBox、PasswodBox的基本用法。的基本用法。 388.3 常用基本控件常用基本控件l单选按钮(单选按钮(RadioButton) 单选按钮一般用于从多个选项中选择一项。单选按钮一般用于从多个选项中选择一项。RadioButton的内容模型是一个的内容模型是一个ContentControl,即它所包含的对象元素可以是,即它所包含的对象元素可以是任何类型(字符串、图像或面板等),但只能包含一个对象元素。任何类型(字符串、图像或面板等),但只能包含一个对象元素。uGroupNameGroupName属性:分组。将同一组的多个属性:分组。将同一组
45、的多个RadioButtonRadioButton的该属性设置为同一个值。用户的该属性设置为同一个值。用户一次只能选择同一组中的一项,一旦某一项被选中,同组中其他的一次只能选择同一组中的一项,一旦某一项被选中,同组中其他的RadioButtonRadioButton将自将自动变为非选中状态。动变为非选中状态。uIsCheckedIsChecked属性:判断是否选中某个单选按钮,如果被选中,则为属性:判断是否选中某个单选按钮,如果被选中,则为truetrue,否则为,否则为falsefalse。 【例例8-11】演示演示RadioButton的基本用法的基本用法 。 398.3 常用基本控件常用
46、基本控件l复选框(复选框(CheckBox) 复选框一般用于同时选择多项或者选择某一项的不同状态。复选框一般用于同时选择多项或者选择某一项的不同状态。 CheckBox的内容模型是一个的内容模型是一个ContentControl,即它可以包含任何类型的单个对象(,即它可以包含任何类型的单个对象(例如字符串、图像、面板等例如字符串、图像、面板等),常用属性和事件如下。,常用属性和事件如下。uContentContent属性:显示的文本。属性:显示的文本。uIsCheckedIsChecked属性:属性:truetrue表示选中,表示选中,falsefalse表示未选中,表示未选中,nonenon
47、e表示不确定。表示不确定。uIsThreeStateIsThreeState属性:如果支持属性:如果支持3 3种状态,则为种状态,则为truetrue;否则为;否则为falsefalse。默认值为。默认值为falsefalse。如果该属性为。如果该属性为truetrue,可将,可将IsCheckedIsChecked属性设置为属性设置为nullnull作为第作为第3 3种状态。种状态。uClickClick事件:单击复选框时发生。利用该事件可判断是三种状态中的哪一种。事件:单击复选框时发生。利用该事件可判断是三种状态中的哪一种。uCheckedChecked事件:复选框选中时发生。事件:复选框
48、选中时发生。uUnCheckedUnChecked事件:复选框未选中时发生。事件:复选框未选中时发生。 408.3 常用基本控件常用基本控件【例例8-12】演示复选框的基本用法。演示复选框的基本用法。418.3 常用基本控件常用基本控件l列表框(列表框(ListBox)和下拉框()和下拉框(ComboBox) ListBox用于显示一组选项,内容模型都是用于显示一组选项,内容模型都是Items,每个选项既可以是,每个选项既可以是字符串,也可以是图像。字符串,也可以是图像。ComboBox是是TextBox和可弹出的和可弹出的ListBox的组合,它除了比的组合,它除了比ListBox多了一个多
49、了一个TextBox以外,对于每个选项的操作与以外,对于每个选项的操作与ListBox的用法完全相的用法完全相同。这两个控件的常用属性、方法和事件如下。同。这两个控件的常用属性、方法和事件如下。uCountCount属性:获取列表项的个数。属性:获取列表项的个数。uSelectedIndexSelectedIndex属性:获取当前选定项从属性:获取当前选定项从0 0开始的索引号,未选择任何项时开始的索引号,未选择任何项时该值为该值为1 1。uSelectedItemSelectedItem属性:获取当前选定的项,未选择任何项时该值为属性:获取当前选定的项,未选择任何项时该值为nullnull。
50、uSelectionModeSelectionMode属性:选择列表项的方式,有以下取值。属性:选择列表项的方式,有以下取值。Single(默认值):每次只能选择一项。Multiple:每次可选择多项,单击对应项选中,再次单击取消选中。Extended:按下键可同时用鼠标选择多个连续项,按下键可同时用鼠标选择多个不连续的项。428.3 常用基本控件常用基本控件l列表框(列表框(ListBox)和下拉框()和下拉框(ComboBox) 这两个控件的常用属性、方法和事件如下。这两个控件的常用属性、方法和事件如下。uItems.AddItems.Add方法:向方法:向ListBoxListBox的项
51、列表添加项。的项列表添加项。uItems.ClearItems.Clear方法:从集合中移除所有项。方法:从集合中移除所有项。uItems.ContainsItems.Contains方法:确定指定的项是否位于集合内。方法:确定指定的项是否位于集合内。uItems.RemoveItems.Remove方法:从集合中移除指定的对象。方法:从集合中移除指定的对象。uSelectionChangedSelectionChanged事件:当选择项发生改变时引发此事件。事件:当选择项发生改变时引发此事件。 438.3 常用基本控件常用基本控件l列表框(列表框(ListBox)和下拉框()和下拉框(Com
52、boBox) 一般将一般将ListBox(或者(或者ComboBox)和数据绑定一起使用。当将)和数据绑定一起使用。当将ListBox(或者(或者ComboBox)绑定到数据源时,通常需要获取)绑定到数据源时,通常需要获取ListBoxItem(或者(或者ComboBoxItem)选项,此时可通过)选项,此时可通过ItemContainerGenerator来实现。来实现。例如:例如:uprivate void GetIndex0(object sender, RoutedEventArgs e)private void GetIndex0(object sender, RoutedEvent
53、Args e) ListBoxItem lbi = ListBoxItem lbi = (ListBoxItem)(lb.ItemContainerGenerator.ContainerFromIndex(0);(ListBoxItem)(lb.ItemContainerGenerator.ContainerFromIndex(0); Item.Content = Item.Content = 第第0 0项是项是: + lbi.Content.ToString() + .;: + lbi.Content.ToString() + .; 448.3 常用基本控件常用基本控件【例例8-13】演示列
54、表框和下拉框的基本用法演示列表框和下拉框的基本用法 45Ch8 WPF控件控件8.1 控件模型和内容模型控件模型和内容模型 8.2 常用布局控件常用布局控件 8.3 常用基本控件常用基本控件8.4 菜单、工具条和状态条菜单、工具条和状态条8.5 图像和图像和GIF动画动画8.6 其他其他WPF控件控件468.4 菜单、工具条和状态条菜单、工具条和状态条l菜单(菜单(Menu)和快捷菜单()和快捷菜单(ContextMenu) Menu控件称为菜单,用于将关联的操作分组或提供上下文帮助,该控控件称为菜单,用于将关联的操作分组或提供上下文帮助,该控件可以显示在窗口的任何一个位置,但一般显示在窗口的
55、顶部。件可以显示在窗口的任何一个位置,但一般显示在窗口的顶部。ContextMenu控件称为快捷菜单,也叫右键快捷菜单或上下文菜单。控件称为快捷菜单,也叫右键快捷菜单或上下文菜单。该控件除了是右键弹出菜单外,其他用法与该控件除了是右键弹出菜单外,其他用法与Menu控件的用法相同。控件的用法相同。这两个控件的菜单项都是通过这两个控件的菜单项都是通过MenuItem来实现的,来实现的,MenuItem内还可内还可以嵌套以嵌套MenuItem,从而实现多级菜单。,从而实现多级菜单。在在MenuItem中,设置中,设置IsCheckable=true可让其有勾选的记号(默认可让其有勾选的记号(默认为为
56、false)。另外,在)。另外,在Header中,可以用中,可以用InputGestureText设置快捷键,设置快捷键,还可以通过还可以通过Command设置系统命令(剪切、复制、粘贴等)。设置系统命令(剪切、复制、粘贴等)。 478.4 菜单、工具条和状态条菜单、工具条和状态条【例例8-14】演示菜单和快捷菜单的基本用法演示菜单和快捷菜单的基本用法 488.4 菜单、工具条和状态条菜单、工具条和状态条l 工具条(工具条(ToolBar、ToolBarTray)和状态条()和状态条(StatusBar) ToolBar一般显示在窗口上方,由多个一般显示在窗口上方,由多个Button、CheckBox、RadioButton、ComboBox等排列组成,通过这些项可以快速地执行程序提供的一些常用命令。等排列组成,通过这些项可以快速地执行程序提供的一些常用命令。ToolBarTray是是ToolBar的容器,该容器内可放置多个的容器,该容器内可放置多个ToolBar,并可以用鼠标拖,并可以用鼠标拖动调整动调整T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于能量尺度方法的软土蠕变特性研究
- 大单元教学在农村初中英语阅读课中的应用研究
- 印度学前教育体系解析
- 体检健康教育核心要点
- 呼吸内科疑难病例讨论
- 肠内营养护理外科
- 健康本领的多维解析
- 《社会财务共享服务实务》课件-增值税的计算与申报
- 预防心理健康教育课件
- 中心校校园安全管理培训
- GB/T 5185-2005焊接及相关工艺方法代号
- GB/T 307.2-2005滚动轴承测量和检验的原则及方法
- 10kV高压配电室交接性试验报告
- 多维阅读第4级Animal Fathers 动物爸爸 课件
- 药品不良反应报告事件表
- DB31T 405-2021 集中空调通风系统卫生管理规范
- 新教材波音手册查询(高级)课件
- DB4404-T 29-2022 球墨铸铁排水井盖管理规范
- 151 医用一次性防护服质量检验原始记录(客户需要根据实际修改)
- 现代汉语常用字表(拼音版本)
- 红星水库除险加固工程初步设计报告
评论
0/150
提交评论