原文: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自定义控件(一)の控件分类相关推荐

  1. WPF 自定义控件-布局控件

    自定义布局控件 1.添加自定义控件 添加新项->WPF->自定义控件(WPF) 在Themes文件夹下Generic.xaml会自动生成自定义控件的模板样式 2.实现自定义布局控件功能 1 ...

  2. WPF知识点:控件分类,样式,ControlTemplate,DataTemplate,ItemTemplate,ItemPanel,ItemContainerStyle

    相关链接: https://www.cnblogs.com/zh7791/p/11449492.html https://www.bilibili.com/video/BV17p4y1C7CE?p=4 ...

  3. WPF自定义仪表盘控件

    WPF自定义仪表盘控件 一.前言 二.功能实现 一.前言 在学习和工作中使用WPF时,都离不开自定义控件的使用,今天分享一个自己在学习过程中使用到的一个自定义仪表盘控件,感觉挺不错的,在这里分享给大家 ...

  4. WPF 自定义TabControl控件样式(转)

    WPF 自定义TabControl控件样式 一.前言 程序中经常会用到TabControl控件,默认的控件样式很普通.而且样式或功能不一定符合我们的要求.比如:我们需要TabControl的标题能够居 ...

  5. WPF查找子控件和父控件方法

    原文:WPF查找子控件和父控件方法 public List<T> GetChildObjects<T>(DependencyObject obj, string name) w ...

  6. WPF 动画显示控件

    原文:WPF 动画显示控件 当我们要显示一个控件的时候,不仅仅要显示这个控件,还要有动画的效果. 主要用到了DoubleAnimation类. public static void ShowAnima ...

  7. WPF的Timer控件的使用

    原文:WPF的Timer控件的使用 通过System.Threaing.Timer控件来实现"初始加载页面时为DataGrid的模版列赋初始值" System.Threaing.T ...

  8. Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决

    Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 参考文章: (1)Wpf使用Winform控件后Wpf元素被Winform控件遮盖问题的解决 (2)https://www. ...

  9. WPF之复杂形状控件

    WPF之复杂形状控件 原文:WPF之复杂形状控件 有的时候想将一张图片变成一个按钮.当然这里不是单纯讲图片作为按钮的背景. 这两者是有区别的: 前者图片即按钮,比如你有一个空心的圆圈,当你点击中间空心 ...

  10. WPF 4 日历控件(Calendar)

    WPF 4 日历控件(Calendar) 原文:WPF 4 日历控件(Calendar) 在之前我已经写过两篇关于WPF 4 任务栏(Taskbar)相关的特性.相信自从VS2010 Beta 版放出 ...

最新文章

  1. Caused by: java.lang.NoClassDefFoundError: redis/clients/util/Pool
  2. SpringBoot-14-MyBatis预热篇,MySQL小结
  3. Java相对路径调用dll文件,VS项目中调用他人提供的.lib和.dll文件的用法(绝对路径和相对路径)...
  4. 设计模式--解析器(Interpreter)模式
  5. 十四、“沥沥雨丝如落泪,麻麻密密总为愁。”(2021.5.2)
  6. hbase集群无法重启的可能原因之一及解决办法
  7. 牛客 - 收集纸片(最短哈密顿路径-状压dp)
  8. c 不安装oracle,安装oracle 10g 的艰难之旅
  9. VS2010+Opencv_2.4.7+win7的配置攻略及错误解决
  10. android 应用模式之mvp
  11. Python: 字符串
  12. Flask第十八篇 Flask-Migrate
  13. 毕业设计 大学生心理健康管理平台
  14. 第三门课 结构化机器学习项目(Structuring Machine Learning Projects)
  15. 【笑话】程序员和青蛙公主
  16. 流利阅读 2019.1.21 Top S. Korean animal rights group slammed for destroying dogs
  17. 移动硬盘安装ubuntu20.04.5(重装无数次的一个教程)
  18. excel 快捷换行,去除空白换行符
  19. 网络安全突发事件应急处置工作预案
  20. 经由unix域套接字传送文件描述符

热门文章

  1. Allegro异型焊盘制作_百度经验
  2. Struts2_HelloWorld_3
  3. 帝国cms后台不停的登录成功
  4. M8TSC预览版0.5.1发布
  5. Logic Pro X for Mac - 音乐制作软件
  6. MusicBrainz Picard for Mac(跨平台音乐标记器)免费版
  7. MacBook 重装 Apache 和 PHP 7.2
  8. Vue指令之v-on
  9. Camtasia 2020软件的媒体库介绍
  10. 为web站点提供https服务的步骤