首页 / 资讯中心 / 文章详情

WPF(控件的继承树、内容控件、布局控件)

WPF(控件的继承树、内容控件、布局控件) ★ FEATURED ARTICLE
一、wpf控件的继承树二、所有控件共同父类总结这样记除去字体的设置、前景色、背景色、Padding、模板、控件内容的对齐方式、边框是control有的其他的东西所有控件全有。Object是所有 .NET 对象的基类所有控件后台线程都可以通过Dispatcher访问所有控件的几乎所有属性都可以数据驱动更新不懂所有控件都支持鼠标、键盘和触摸事件所有控件都支持设置宽高最小/最大尺寸HorizontalAlignment/VerticalAlignment- 父容器中的对齐方式默认值为StretchStyle- 样式DataContext- 数据上下文Resources-资源ContextMenu属性设置与获取控件的上下文菜单 就是鼠标在控件上右键时弹出来的菜单。Cursor属性获取或设置在鼠标指针位于此元素上时显示的光标。Parent属性获取此元素的逻辑父元素。它是一个只读属性。Tag属性可以保存任意类型的对象值它就像FrameworkElement类身上的一个小口袋但确能容纳万物。我们通常会将一些与控件相关的数据临时存放在Tag属性中当把控件作为参数传递时小口袋里面的对象也随之传递过去了ToolTip属性Margin- 外边距Object定义所有 .NET 对象的基类DispatcherObject定义当后台线程需要访问 UI 线程上的控件或对象时WPF 会在 UI 线程上提供一个“中间商”——Dispatcher调度员。这个调度员被封装在抽象类 DispatcherObject 中所有控件都继承自 DispatcherObject。因此当你在后台线程中需要访问控件时可以从控件身上找到这位中间商 Dispatcher由它代为完成对控件的操作与访问。DependencyObject定义数据驱动模式是因为几乎WPF控件的所有属性都可以采用这种模式去更新属性的Visual定义主要是为 WPF 中的呈现提供支持其中包括命中测试、坐标转换和边界框计算UIElement定义UIElement基类为我们提供了一系列的鼠标、键盘和触摸事件并提供了一些常用的依赖属性Visibility、IsEnabled、IsMouseOver、IsKeyboardFocused等。它可以呈现继承它的所有控件为控件布局时调整位置和大小响应用户的输入引发一系列的路由事件。FrameworkElement定义对UIElement的补充。Width/Height- 宽度/高度只有Grid有*其他都是数字或者auto默认值根据内容决定大小MinWidth/MinHeight- 最小尺寸MaxWidth/MaxHeight- 最大尺寸HorizontalAlignment/VerticalAlignment- 对齐方式默认值为StretchStyle- 样式DataContext- 数据上下文Resources-资源ContextMenu属性设置与获取控件的上下文菜单 就是鼠标在控件上右键时弹出来的菜单。Cursor属性获取或设置在鼠标指针位于此元素上时显示的光标。Parent属性获取此元素的逻辑父元素。它是一个只读属性。Tag属性可以保存任意类型的对象值它就像FrameworkElement类身上的一个小口袋但确能容纳万物。我们通常会将一些与控件相关的数据临时存放在Tag属性中当把控件作为参数传递时小口袋里面的对象也随之传递过去了ToolTip属性Margin- 外边距三、Shape图像控件四、Control字体的设置、前景色、背景色、Padding、模板、控件内容的对齐方式、边框。属性说明FontStyle获取或设置控件的字体结构类似于Word中字体的常规、斜体或倾斜FontStretch获取或设置紧缩或在屏幕上展开一种字体的程度。FontSize获取或设置字体大小。FontFamily获取或设置控件的字体系列。如微软雅黑 Microsoft YaHei UIForeground获取或设置控件的字体颜色也就是所谓的前景色画笔它是一个刷子BrushBackground获取或设置一个用于描述控件的背景画笔。BorderThickness获取或设置控件的边框宽度。IsTabStop获取或设置一个值该值指示控件是否包括在选项卡上的导航窗格中。VerticalContentAlignment获取或设置控件的内容的垂直对齐方式。TabIndex获取或设置一个值确定当用户导航控件通过使用 TAB 键元素接收焦点的顺序。Padding获取或设置在控件中的填充量。Template获取或设置控件模板。FontWeight获取或设置指定的字体粗细。BorderBrush获取或设置一个用于描述一个控件的边框背景画笔。HorizontalContentAlignment获取或设置控件的内容的水平对齐方式。4.1ContentControl内容控件有一个Content属性关键是这个属性的类型是object。4.2ItemControl条目控件Panel布局控件的基类属性BackgroundChildren属性这是一个集合属性也就是说所有的布局控件都可以添加多个子元素注意Panel的Background属性。有时候我们希望在布局控件上实现鼠标点击事件的获取请记得一定要给Background属性设置一个颜色值如果不希望有具体的颜色那就设置成Transparent 。不然您会踩坑的因为布局控件的Background属性没有值时是不能引发鼠标相关事件的。WPF 控件何时由内容决定大小何时填满父容器控件的大小行为是“由内容决定”还是“占满父容器”主要由尺寸属性Width/Height、对齐属性HorizontalAlignment/VerticalAlignment以及父布局容器的特性共同决定。最终显示的大小 父容器分配的空间∩子元素自身约束Stretch默认非 StretchWidth/Height 未设填满父容器给的 slot有限空间按内容大小Width/Height 设了固定尺寸Stretch 不再拉伸固定尺寸按对齐定位父容器给无限空间时StackPanel 的堆叠方向、CanvasStretch 没有有限 slot 可填结果还是内容大小。五、control的子类ContentControlButton (按钮)常用属性Content- 按钮显示的内容可以是文本或其他元素IsEnabled- 是否启用按钮BorderBrush/BorderThickness- 边框颜色/粗细Padding- 内边距内部元素到边框距离左上右下Command- 绑定的命令CommandParameter- 命令参数常用事件Click- 点击事件Button Content点击我 ClickButton_Click/TextBox (文本框)常用属性Text- 文本框内容MaxLength- 最大字符数TextWrapping- 文本换行方式IsReadOnly- 是否只读SelectionStart/SelectionLength- 选中文本AcceptsReturn- 是否接受回车AcceptsTab- 是否接受制表符常用方法Clear()- 清空文本SelectAll()- 全选文本AppendText(string)- 追加文本常用事件TextChanged- 文本改变时触发PreviewTextInput- 文本输入前触发LostFocus- 失去焦点时触发TextBox文本不居中引入问题在 WPF 的TextBox控件中HorizontalContentAlignmentCenter和TextAlignmentCenter虽然最终呈现的视觉效果都是让文字水平居中但它们的作用层级和控制范围有着本质的区别HorizontalContentAlignmentCenter控件内容层级它继承自Control基类控制的是整个内容对象在 TextBox 中这个内容对象是内部承载文字的ScrollViewer在控件内部的水平对齐方式。简单来说它决定了“装文字的那个容器”在 TextBox 里怎么摆放。TextAlignmentCenter文本排版层级它是TextBox专门用来控制纯文本排版的属性。它直接作用于文字本身决定了文字段落在其行宽内的水平对齐方式。Label (标签)常用属性Content- 显示内容Target- 指定关联的控件设置助记键时使用Label Content_Username: Target{Binding ElementNameuserNameTextBox}/ TextBox x:NameuserNameTextBox/CheckBox (复选框)常用属性IsChecked- 是否选中bool?支持三种状态Content- 显示内容ThreeState- 是否支持三种状态常用事件Checked/Unchecked- 选中状态改变时触发Indeterminate- 不确定状态时触发RadioButton (单选按钮)常用属性IsChecked- 是否选中Content- 显示内容GroupName- 分组名称同组内互斥常用事件Checked- 选中时触发Slider (滑块)常用属性TickPlacement-显示刻度Minimum/Maximum- 最小/最大值最大值默认值为0Value- 当前值TickFrequency- 刻度间隔IsSnapToTickEnabled- 是否吸附到刻度Orientation- 方向Horizontal/VerticalTicks-刻度出现在特定位置常用事件ValueChanged- 值改变时触发注意最大值默认值为10需要自己设置原生slider刻度没有数值标识ProgressBar (进度条)常用属性Minimum/Maximum- 最小/最大值Value- 当前值IsIndeterminate- 是否为不确定状态动态显示DatePicker (日期选择器)常用属性SelectedDate- 选择的日期DateTime?DisplayDate- 显示的日期DisplayDateStart/DisplayDateEnd- 可选日期范围IsDropDownOpen- 下拉框是否打开常用事件SelectedDateChanged- 日期改变时触发Expander (可展开控件)常用属性IsExpanded- 是否展开Header- 标题内容常用事件Expanded/Collapsed- 展开/折叠时触发集合控件ListBox (列表框)常用属性ItemsSource- 数据源SelectedItem- 当前选中项SelectedItems- 当前选中的多项当SelectionMode为Multiple或Extended时SelectionMode- 选择模式Single/Multiple/ExtendedDisplayMemberPath- 显示成员的路径常用方法ScrollIntoView(object)- 滚动到指定项常用事件SelectionChanged- 选择项改变时触发ComboBox (下拉框)常用属性ItemsSource- 数据源SelectedItem- 当前选中项SelectedIndex- 当前选中索引DisplayMemberPath- 显示成员的路径IsEditable- 是否可编辑Text- 编辑框中的文本当IsEditabletrue时常用方法Add(object)- 添加项Remove(object)- 移除项Clear()- 清空所有项常用事件SelectionChanged- 选择项改变时触发TreeView (树形视图)常用属性ItemsSource- 数据源SelectedItem- 当前选中项常用方法ExpandSubtree()- 展开所有子项常用事件SelectedItemChanged- 选中项改变时触发DataGrid (数据表格)常用属性ItemsSource- 数据源SelectedItem- 当前选中行AutoGenerateColumns- 是否自动生成列CanUserAddRows- 用户是否可以添加行CanUserDeleteRows- 用户是否可以删除行常用方法BeginEdit()- 开始编辑CommitEdit()- 提交编辑CancelEdit()- 取消编辑常用事件SelectionChanged- 选择改变时触发RowEditEnding- 行编辑结束时触发TabControl (选项卡)常用属性SelectedIndex- 当前选中标签索引SelectedItem- 当前选中标签项常用事件SelectionChanged- 标签切换时触发Menu (菜单)常用属性Items- 菜单项集合常用方法AddMenuItem()- 添加菜单项ContextMenu (上下文菜单)常用属性Items- 菜单项集合IsOpen- 菜单是否打开ToolTip (工具提示)常用属性Content- 提示内容Placement- 提示位置IsOpen- 是否显示ScrollViewer (滚动视图)常用属性HorizontalScrollBarVisibility- 水平滚动条可见性VerticalScrollBarVisibility- 垂直滚动条可见性Content- 滚动内容三、FrameworkElement的子类3.1Image常用属性Source- 图像源BitmapImage/UriStretch- 拉伸方式None/Fill/Uniform/UniformToFillStretchDirection- 拉伸方向Image SourceImages/logo.png StretchUniform/3.2Border (边框)常用属性BorderBrush- 边框颜色BorderThickness- 边框粗细CornerRadius- 圆角半径Background- 背景色3.3TextBlock也就是说没有control的属性以下这些都没。四、panel的子类4.1stackpanelOrientationHorizontal且有子控件时水平方向的大小取决于内容
阅读完成 · 觉得有帮助?
咨询建站