WPF自定义控件(一)の控件分类
一、什么是控件(Controls)
控件是指对数据和方法的封装。控件可以有自己的属性和方法,其中属性是控件数据的简单访问者,方法则是控件的一些简单而可见的功能、控件创建过程包括设计、开发、调试(就是所谓的3Ds开发流程,即Design、Develop、Debug)工作, 然后是控件的使用。开发者应该掌握的三项主要内容是:属性、事件和方法。
所有的wpf控件都是继承自Control,根据用途上可以分为四种:内容控件(Content Controls)、条目控件(Items Controls)、文本控件(Text Controls)、范围控件(Range Controls)。
根据创建方式不不同,可以分为常用控件(一般指原生)、扩展控件(继承于原有控件,进行功能扩展,例如TextBox添加水印文字)、自定义控件(原来没有,根据功能创造一个控件,继承于Control或上面提到的四种)、用户控件(对基础控件--前面提到的功能单一的控件进行组合,形成一个具有封装性的功能集合)。
下面将对各种控件进行介绍。
二、控件类型介绍(根据用图)
1、内容控件
内容控件的最大的特征就是有一个Content属性,从前面的文章中,我们多多少少也知道Content接收的是一个Object类型,或许我们会立即想到莫非Button就是一个内容控件,确实,Button算是一个内容控件,凡是内容控件都继承自ContentControl,因为Content属性就是属于ContentControl。下面是Button的类图。
Button是继承自ButtonBase的,Button有个很有趣的地方就是ButtonBase中存在一个ClickMode属性,触发方式在ClickMode中以枚举的方式展现,Hover,Press和Release,默认也就是Press。
RepeatButton,在wpf中也是一个新增的控件,那么它的用途是什么呢?很简单,我们在看video的时候都有“快进”,“快退”,你懂的,首先我们看下RepeatButton中的定义,我们发现有一个Delay:作用就是按下时第一次触发Click的时间延迟,Interval:每次click发生的时间间隔,如果大家玩转了Timer控件都应该很清楚。
ToggleButton是CheckBox和RadioButton的基类,而且还存在IsThreeState属性,实际上我们最终的UI呈现的要么是CheckBox,要么是Radiobutton,要使第三种状态有效,我们只需要设置IsThreeState属性和Indeterminate事件即可。
2、条目控件
条目控件首先都是继承自ItemsControl,在ItemsControl中我们发现有两个比较有意思的属性,Items和ItemsSource。
Items:
Items属于ItemCollection的集合类型,所以每一个Item里面都可以放入一个Object类型对象,这里有意思的地方就是,如果我放入的是一个UI元素,那么很好,wpf会调用UI的OnRender方法将UI元素呈现,如果说是一个没有OnRender方法的元素,那该怎么办呢?wpf很智能,它会创建一个TextBlock,然后调用该对象的ToString()将字符串呈现在TextBlock上。
ItemsSource:
ItemsSource用于绑定数据源。
下面是它的类图:
MenuBase:从图中我们可以看出MenuBase的子类有两个Menu和ContextMenu。
Selector:既然是选择性的控件,那么难免少不了SelectedIndex或者SelectedItem。
TabControl:顾名思义就是选项卡,因为我们知道用ListBox是很占用空间的,而TabControl是具有更小的地方展现更多的内容,其实TabControl的每一个标签页都是一个TabItem。
ListView:这个控件我们在实际开发中经常用于数据绑定,它是继承自ListBox,ListBox默认只能显示一列,而ListView则可以用于显示多列,这里我提一个很有兴趣的玩意ObservableCollection<T>。它有什么用呢?其实ObservableCollection可以允许一个UI元素作为观察者对它进行监视,也就是说如果ObservableCollection中的元素有变动,作为观察的UI元素也会相应的改变,下面举个例子。
StatusBar:状态栏控件。
TreeView:我们知道TreeView是一个树形控件,TreeView的数据绑定需要注意。
3、文本控件
在wpf中,文本控件有三个,分别是:TextBox,RichTextBox和PasswordBox,类图如下:
通过这次学习和思维整理,更加清楚了控件的脉络,我将在剩下的章节里介绍余下的控件知识。
自定义控件系列博文链接:
WPF自定义控件(一)の控件分类
WPF自定义控件(二)の重写原生控件样式模板
WPF自定义控件(三)の扩展控件
WPF自定义控件(四)の自定义控件
WPF自定义控件(五)の用户控件
WPF自定义控件(一)の控件分类相关推荐
- WPF 自定义控件-布局控件
自定义布局控件 1.添加自定义控件 添加新项->WPF->自定义控件(WPF) 在Themes文件夹下Generic.xaml会自动生成自定义控件的模板样式 2.实现自定义布局控件功能 1 ...
- WPF知识点:控件分类,样式,ControlTemplate,DataTemplate,ItemTemplate,ItemPanel,ItemContainerStyle
相关链接: https://www.cnblogs.com/zh7791/p/11449492.html https://www.bilibili.com/video/BV17p4y1C7CE?p=4 ...
- WPF自定义仪表盘控件
WPF自定义仪表盘控件 一.前言 二.功能实现 一.前言 在学习和工作中使用WPF时,都离不开自定义控件的使用,今天分享一个自己在学习过程中使用到的一个自定义仪表盘控件,感觉挺不错的,在这里分享给大家 ...
- WPF 自定义TabControl控件样式(转)
WPF 自定义TabControl控件样式 一.前言 程序中经常会用到TabControl控件,默认的控件样式很普通.而且样式或功能不一定符合我们的要求.比如:我们需要TabControl的标题能够居 ...
- WPF查找子控件和父控件方法
原文:WPF查找子控件和父控件方法 public List<T> GetChildObjects<T>(DependencyObject obj, string name) w ...
- WPF 动画显示控件
原文:WPF 动画显示控件 当我们要显示一个控件的时候,不仅仅要显示这个控件,还要有动画的效果. 主要用到了DoubleAnimation类. public static void ShowAnima ...
- WPF的Timer控件的使用
原文:WPF的Timer控件的使用 通过System.Threaing.Timer控件来实现"初始加载页面时为DataGrid的模版列赋初始值" System.Threaing.T ...
- Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决
Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...
- WPF之复杂形状控件
WPF之复杂形状控件 原文:WPF之复杂形状控件 有的时候想将一张图片变成一个按钮.当然这里不是单纯讲图片作为按钮的背景. 这两者是有区别的: 前者图片即按钮,比如你有一个空心的圆圈,当你点击中间空心 ...
- WPF 4 日历控件(Calendar)
WPF 4 日历控件(Calendar) 原文:WPF 4 日历控件(Calendar) 在之前我已经写过两篇关于WPF 4 任务栏(Taskbar)相关的特性.相信自从VS2010 Beta 版放出 ...
最新文章
- Caused by: java.lang.NoClassDefFoundError: redis/clients/util/Pool
- SpringBoot-14-MyBatis预热篇,MySQL小结
- Java相对路径调用dll文件,VS项目中调用他人提供的.lib和.dll文件的用法(绝对路径和相对路径)...
- 设计模式--解析器(Interpreter)模式
- 十四、“沥沥雨丝如落泪,麻麻密密总为愁。”(2021.5.2)
- hbase集群无法重启的可能原因之一及解决办法
- 牛客 - 收集纸片(最短哈密顿路径-状压dp)
- c 不安装oracle,安装oracle 10g 的艰难之旅
- VS2010+Opencv_2.4.7+win7的配置攻略及错误解决
- android 应用模式之mvp
- Python: 字符串
- Flask第十八篇 Flask-Migrate
- 毕业设计 大学生心理健康管理平台
- 第三门课 结构化机器学习项目(Structuring Machine Learning Projects)
- 【笑话】程序员和青蛙公主
- 流利阅读 2019.1.21 Top S. Korean animal rights group slammed for destroying dogs
- 移动硬盘安装ubuntu20.04.5(重装无数次的一个教程)
- excel 快捷换行,去除空白换行符
- 网络安全突发事件应急处置工作预案
- 经由unix域套接字传送文件描述符