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 ...
随机推荐
- TP6 前一个项目可以,第二个项目配置多域名绑定应用一直失效
之前的域名类似: www.a.com test.a.com edu.a.com ... 文件config/app.php中 'domain_bind' => [ 'test' ...
- DEDE留言板调用导航的方法
DEDE留言板调用导航的方法 dede里的留言板guestbook.htm用{dede:include filename="../default/head.htm"/}不能自动生成 ...
- express 路由匹配和数据获取
express配置路由只需要通过app.method(url,func)来配置,其中url配置和其中的参数获取方法不同 直接写全路径 路由中允许存在. get请求传入的参数 router.get(&q ...
- DL4J实战之一:准备
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- MySQL8.0允许外部访问
MySQL8.0允许外部访问 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/h99 ...
- 【vscode高级玩家】Visual Studio Code❤️安装教程(最新版🎉教程小白也能看懂!)
目录 如果您在浏览过程中发现文章内容有误,请点此链接查看该文章的完整纯净版 下载 Linux Mac OS 安装 运行安装程序 同意使用协议 选择附加任务 准备安装 开始安装 安装完成 如果您在浏览过 ...
- B站1024程序员节部分答案
1.页面的背后是什么? 直接撸页面源码就行啦 2.真正的秘密只有特殊的设备才能看到 修改UA为页面上提示的"bilibili Security Browser" 3.密码是啥? 弱 ...
- 开发函数计算的正确姿势——OCR 服务
作者 | 杜万(倚贤) 阿里云技术专家 简介 首先介绍下在本文出现的几个比较重要的概念: OCR(光学字符识别):光学字符识别(Optical Character Recognition, OCR)是 ...
- 解决el-checkbox-group 的v-model无法绑定对象数组
elementUI官方文档中el-checkbox-group组件绑定的都为一维数组,真实业务中数据绑定往往是多个键值对的对象数组,本文主要解决这个问题. 如下代码: <el-checkbox- ...
- PHP伪协议与文件包含漏洞1
PHP文件包含漏洞花样繁多,需配合代码审计. 看能否使用这类漏洞时,主要看: (1)代码中是否有include(),且参数可控: 如: (2)php.ini设置:确保 allow_url_fopen= ...