WPF进阶技巧和实战03-控件(4-基于范围的控件及日期控件)
系列文章链接
- WPF进阶技巧和实战01-小技巧
- WPF进阶技巧和实战02-布局
- WPF进阶技巧和实战03-控件(1-控件及内容控件)
- WPF进阶技巧和实战03-控件(2-特殊容器)
- WPF进阶技巧和实战03-控件(3-文本控件及列表控件)
- WPF进阶技巧和实战03-控件(4-基于范围的控件及日期控件)
- WPF进阶技巧和实战03-控件(5-列表、树、网格01)
- WPF进阶技巧和实战03-控件(5-列表、树、网格02)
- WPF进阶技巧和实战03-控件(5-列表、树、网格03)
- WPF进阶技巧和实战03-控件(5-列表、树、网格04)
- WPF进阶技巧和实战04-资源
- WPF进阶技巧和实战05-样式与行为
- WPF进阶技巧和实战06-控件模板
- WPF进阶技巧和实战07--自定义元素01
- WPF进阶技巧和实战07--自定义元素02
- WPF进阶技巧和实战08-依赖属性与绑定01
- WPF进阶技巧和实战08-依赖属性与绑定02
- WPF进阶技巧和实战08-依赖属性与绑定03
基于范围的控件
WPF提供了3种范围概念的控件,这些控件使用在特定最小值和最大值之间的数值,ScrollBar、ProgressBar、Slider,他们都继承自RangeBase类(该类继承自Control类)。RangeBase类定义的属性:
| 名称 | 说明 |
|---|---|
| Value | 控件的当前值,必须在最大值和最小值之间。默认是从0开始。属性值不是整数,是double,可接受小数值。Value属性值发生变化时,可响应ValueChanged事件 |
| Maximum | 上限,允许的最大值 |
| Minimum | 下限,允许的最小值 |
| SmallChange | 最小变化(调整的数量)。小变化的含义与控件相关,对于ScrollBar和Slider控件,这是当使用箭头键时值改变的量,对于ScrollBar控件,还可以使用滚动条两端的箭头按钮 |
| LargeChange | 最大变化(调整的数量)。大变化的含义与控件相关,对于ScrollBar和Slider控件,这是当使用PageUp和PageDown键或者单击滑块两侧时值改变的量 |
通常不直接使用ScrollBar控件,更高级的ScrollViewer控件封装了两个ScrollBar控件,Slider和ProgressBar控件更实用,经常被单独使用。
Slider
当数字本身不是特别重要时,可使用该控件设置数值。比如通过滑动条上从一边向另一边拖动滑块设置媒体播放器的音量是非常合理的。滑块的大致位置指示当前相对音量,但是后面的数字对用户没有实际意义。Slider额外的属性:
| 名称 | 说明 |
|---|---|
| Orientation | 竖直滑动条和水平滑动条之间切换 |
| Delay/Interval | 当单击并按下滑动条的两侧,控制滑动块沿轨迹移动的速度。这两个属性都是毫秒值。Delay是单击后在滑块移动一个单位之前的时间,而Interval是当继续按住鼠标键时滑块再次移动之前的时间 |
| TickPlacement | 决定刻度显示的位置,默认是None不显示刻度标记。还有TopLeft和BottomRight两种情况显示 |
| TickFrequency | 设置刻度之间的间隔,决定了显示多少刻度。例如,可每隔5个单位放置一个刻度,每隔10个单位放置一个刻度等。 |
| Ticks | 如果希望在特定的不规则位置放置刻度,可使用Ticks集合,简单地为每个刻度标记向该集合添加一个数值 |
| IsSnapToTickEnabled | 默认false,如果为true时,当移动滑动条时,会自动跳转到合适的位置(最近的刻度) |
| IsSelectionRangeEnabled | 如果为true,可使用选择范围使滑动条的一部分显示阴影,使用SelectionStart和SelectionEnd属性设置位置选择范围。选择范围没有固有的意义,但可以因为任何有意义的目的而使用,如:媒体播放器有时使用阴影背景工具条指示媒体文件的下载进度 |
<Slider
Width="400"
VerticalAlignment="Center"
IsSnapToTickEnabled="True"
Maximum="{Binding DataStepMax}"
Minimum="{Binding DataStepMin}"
SmallChange="{Binding DataStepStep}"
TickFrequency="{Binding DataStepStep}"
Value="{Binding Step}" />
ProgressBar
该控件指示长时间运行任务的进度。不能与用户进行交互。由代码传递Value属性值,无法响应鼠标动作或者键盘键入。通常方式是将它作为长时间运行的状态指示器,甚至可能不知道该任务需要执行多长时间,可以通过IsIndeterminate属性设置为true来完成这一工作(这时不再使用Minimum、Maximum和Value属性)
<ProgressBar Height="20" Margin="0,5"
IsIndeterminate="True" Maximum="200"
Style="{StaticResource ProgressBarDanger}" Value="100" />
日期控件
WPF包含两种日期控件:Calender和DatePicker。
Calender控件显示日历,与WIndows操作系统中看到的日历相似,该控件每次显示一个月份,允许从一个月份调到另一个月份,或者调到某个特定的月份(通过单击月份的标题头查看一年中的月份,然后单击月份)
DatePicker控件需要的控件较少。它模仿简单的文本框,该文本框以长日期或者短日期格式保存日期字符串。提供了一个下来箭头,单击时,会弹出完整的日历视图(同Calender)。
两个控件提供属性允许确定显示哪些日期以及哪些如期可供选择(以连续的范围提供这些日期),可供使用的属性:
| 名称 | 说明 |
|---|---|
| DisplayDateStart DisplayDateEnd |
设置在日历视图中显示日期范围。从第一个最早的日期DisplayDateStart到最后的日期DisplayDateEnd。不能导航到未包含能够显示的日期的月份。为显示所有日期,可将DisplayDateStart属性设置为DateTime.MinValue,并将DisplayDateEnd设置成DateTime.MaxValue |
| BlackoutDates | 保存在日历中将被禁用或者不能选择的日期集合。如果这些日期不在可显示的日期范围内,或者如果已经选择了这些日期中的某个日期,那么将接收到异常。为阻止选择过去的任何日期,可调用BlackoutDates.AddDatesInPass()方法 |
| SelectedDate | 作为DateTime对象提供选择的日期(或者在没有日期选中时使用null值)可以通过代码或者单击日历中的日期或者通过键盘输入日期字符串设置该属性。在日历视图中,选择的日期使用具有阴影的方框标识,只有当日期控件具有焦点时才会显示该方框 |
| SelectedDates | 作为DateTime对象的集合提供选择的日期。Calender控件支持该属性,并且只有当修改SelectionMode属性允许选择多个日期时,该属性才有用。 |
| DisplayDate | 使用DateTime对象确定在日历视图中最初显示的日期。如果该属性是null,将显示SelectedDate属性的值。如果两者都为null,则显示当前日期。 |
| FirstDayOfWeek | 确定在日历中每行的开始位置(最左边的位置)显示一星期中的哪一天 |
| IsTodayHighlighted | 确定日历视图是否通过突出显示指出当前日期 |
| DisplayMode (Calender控件) |
确定日历最初的月份显示模式。如果设置为Month,则显示标准的单一月份视图,如果是Year,则显示当前年份中的月份,一旦单击了某个月份,就显示月份的完整视图 |
| SelectionMode (Calender控件) |
确定日期选择类型。默认值是SingleDate,允许选择单个日期。None(完全禁止选择日期),SingleRange(可选择一组连续的日期),MultipleRange(可选择任意日期的组合)。在后两种模式下,可以通过拖动选择多个日期,或者当按下Ctrl键时通过单击选择多个日期,可使用SelectedDates属性获取所有选择的日期集合 |
| IsDropDownOpen (DatePicker控件) |
确定是否打开DatePicker控件中的下拉日历视图。可通过代码设置该属性显示和隐藏日历 |
| SelectedDateFormat (DatePicker控件) |
确定在此控件文本部分显示选择的日期方式,可选择Short或者Long,实际的显示格式取决于客户计算机的区域设置。长日期通常包含月份和天的名称 |
日期控件提供了不同的事件,最常见的是DatePicker控件的SelectedDateChanged事件或者Calender控件的SelectedDatesChanged事件,该事件添加了对多个日期选择的支持。
Calender控件还添加了DisplayDateChanged事件,DatePicker控件还添加了CalenderOpened和CalenderClosed事件(日历控件打开或者关闭),DateValidationError事件(当用在文本输入部分不能被转换成合法的时间时触发该事件)。
WPF进阶技巧和实战03-控件(4-基于范围的控件及日期控件)的更多相关文章
- WPF进阶技巧和实战03-控件(3-文本控件及列表控件)
系列文章链接 WPF进阶技巧和实战01-小技巧 WPF进阶技巧和实战02-布局 WPF进阶技巧和实战03-控件(1-控件及内容控件) WPF进阶技巧和实战03-控件(2-特殊容器) WPF进阶技巧和实 ...
- WPF进阶技巧和实战06-控件模板
逻辑树和可视化树 System.Windows.LogicalTreeHelper System.Windows.Media.VisualTreeHelper 逻辑树类(LogicalTreeHelp ...
- WPF进阶技巧和实战07--自定义元素01
完善和扩展标准控件的方法: 样式:可使用样式方便地重用控件属性的集合,甚至可以使用触发器应用效果 内容控件:所有继承自ContentControl类的控件都支持嵌套的内容.使用内容控件,可以快速创建聚 ...
- WPF进阶技巧和实战08-依赖属性与绑定02
将元素绑定在一起 数据绑定最简单的形式是:源对象是WPF元素而且源属性是依赖项属性.依赖项属性内置了更改通知支持,当源对象中改变依赖项属性时,会立即更新目标对象的绑定属性. 元素绑定到元素也是经常使用 ...
- WPF进阶技巧和实战02-布局
窗体 无边框 窗体无边框(最大化及标题位置)WindowStyle="None" 窗体透明 AllowsTransparency="True",必须设置窗体无边 ...
- WPF进阶技巧和实战09-事件(2-多点触控)
多点触控输入 多点触控输入和传统的基于比的输入的区别是多点触控识别手势,用户可以移动多根手指以执行常见的操作,放大,旋转,拖动等. 多点触控的输入层次 WPF允许使用键盘和鼠标的高层次输入(例如单击和 ...
- WPF进阶技巧和实战03-控件(1-控件及内容控件)
所有控件都继承自System.Windows.Controls.Control类,这个类添加一些基本结构: 设置控件内容对齐方式 (HorizontalContentAlignment,Vertica ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格03)
数据视图 数据视图是在后台工作的,用于协调绑定数据的集合.使用数据视图可以添加导航逻辑.实现数据过滤.排序.分组. 当将集合或者DataTable绑定到ItemsControl控件时,会不加通告地在后 ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格02)
数据模板 样式提供了基本的格式化能力,但是不管如何修改ListBoxItem,他都不能够展示功能更强大的元素组合,因为了每个ListBoxItem只支持单个绑定字段(通过DisplayMemberPa ...
随机推荐
- DEDEcms手机网站添加详情内页上一页/下一页的翻页功能
修改文件include/arc.archives.class.php文件. 1.搜索 function GetPreNext($gtype='') 2.将这个函数的所有内容替换为 function G ...
- Jmeter扩展组件开发(6) - 将响应结果数据显示到查看结果树中
CODE //用来存储响应数据,目的是将响应结果放到查看结果树当中private String resultData;/** 这个方法就是实现你具体功能逻辑的方法* @param javaSample ...
- eps出坑出坑
1 visio格式转eps 先将Visio保存为pdf格式文件 使用adobe acrobat编辑pdf 先将文件裁剪至所需大小 随后点编辑,选择全选,然后文件,导出到,内嵌postscript 2 ...
- MySQL&ES连接池
数据库的连接池建议放在类似settings.py的配置模块中,因为基本都是配置项,方便统一管理. 1) 连接池类#settings.py import os from DBUtils.PooledDB ...
- 软件开发的V模型
原文来自:http://www.51testing.com/html/67/n-3723567.html 软件开发的V模型大家都不陌生,其中测试阶段分为单元测试->功能测试->系统测试-& ...
- [转载]PHP命名规则
PHP命名规则 引用地址:http://www.cnblogs.com/pengxl/p/3571157.html 就一般约定而言,类.函数和变量的名字应该是能够让代码阅读者能够容易地知道这些代码的作 ...
- CF1556D-Take a Guess【交互】
正题 题目链接:https://codeforces.com/contest/1556/problem/D 题目大意 现在有\(n\)个你不知道的数字,你有两种询问操作 询问两个下标的数字的\(and ...
- BufferedInputStream与BufferedOutputStream的缓存底层实现
首先观察BufferedInputStream 的继承体系,可以看出他是继承自一个FilterInputStream,而这个又是继承自InputStream 我们在之前的装饰器模式就讲过,这个Buff ...
- 关于mysql基础
早就想把自己的数据库基础巩固一下,然而一直没有时间,今天终于抽出时间对mysql数据库基础进行了学习与扩展. mysql与其他数据库的区别 Sqlite: 开源免费,体积小,单文件,没有进程.磁盘读性 ...
- 关于Windows操作系统重定向
在用C++做一个文件遍历的时候发现,当我遍历C:\Windows\system32文件夹时,获取到的文件数目和实际总是对不上.在通过他人帮助后了解到了重定向这个概念,我百度了一下,下面为粘贴内容. S ...