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 ...
随机推荐
- postman 插件安装
本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,https:/ ...
- django 安装与配置-01
安装命令 sudo pip install django python 可以引入django说明已经安装成功 查看django的版本 查看django管理命令 django-admin django创 ...
- 防刷功能的实现(thinkphp5)
$seconds = '3'; //时间段[秒] $refresh = '3';//最大次数 $cur_time = time(); if(Session::get('refresh_times')) ...
- 在反序列化数据的时候报错raise JSONDecodeError("Expecting value", s, err.value) from None json.decode
今天在爬取某网站数据内容适合,通过正则匹配拿到了需要的内容字符串,但是在反序列化的时候竟然报错,大概意思知道他不是json的期望值,那么我就会像是不是数据内有一些内容是由于编码的问题导致的呢?因为之前 ...
- iNeuOS工业互联网操作系统部署在华为欧拉(openEuler)国产系统,vmware、openEuler、postgresql、netcore、nginx、ineuos一站式部署
目 录 1. 概述... 3 2. 创建虚拟机&安装华为欧拉(openEuler)系统... 4 2.1 创建新的虚拟机... 4 2.2 ...
- [RabbitMQ]下载&安装
RabbitMQ是基于Erlang语言开发的消息中间件,所以使用RabbitMQ需要安装Erlang和RabbitMQ两个软件. 1 Erlang 1.1 下载 官网下载地址:https://www. ...
- springcloud组件之hystrix服务熔断,降级,限流
hystrix 简介 Hystrix是什么 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过 ...
- xml文件报Element 'beans' cannot have character [children],because the type's content type is element
写springMvc.xml文件时,偶然遇到 Element 'beans' cannot have character [children],because the type's content t ...
- 关于十二生肖的数学发现(C++)
把数字看成是年份,然后根据生肖赋值.这里把鼠年赋值为1,牛年赋值为2,虎年赋值为3,兔年赋值为4,龙年赋值为5,蛇年赋值为6,马年赋值为7,羊年赋值为8,猴年赋值为9,鸡年赋值为10,狗年赋值为11, ...
- web全栈后台权限管理系统(VUE+ElementUi+nodeJs+koa2)
web全栈后台权限管理系统(VUE+ElementUi+nodeJs+koa2) 主要技术 前端 vue 全家桶 ElementUI 后端 Node.js Koa2 Mongoess 数据库 mong ...