WPF,Silverlight与XAML读书笔记第二十六 控件之八 – Range控件

说明:本系列基本上是《WPF揭秘》的读书笔记。在结构安排与文章内容上参照《WPF揭秘》的编排,对内容进行了总结并加入一些个人理解。

    不同于内容控件与Items控件显示范围随着内部内容而变化,Range控件的显示范围是固定的。Range控件继承自RangeBase类,这个类提供了Range控件的核心功能 – 存储并显示数值。这个类的成员有如下:

属性:

  • Value,Minimum与Maximum:这是三个浮点类型的属性,用来存储当前值与值的范围。

事件:

  • ValueChanged:在值发生变化时触发此事件。

WPF中内建了几种Range控件 – ProgressBar,Slider,ScrollBar(不常用)与ScrollViewer(ScrollBar的替代品)。

ProgressBar(WPF)

适当的使用ProgressBar可以提高软件的易用性。很多软件都使用进度条,这是一种很常见的控件。

ProgressBar中Minimum属性默认为0,Maximum属性为100(以上两个值可以重写),另外其重写了基类中如下两个属性:

IsIndeterminate:当为True时,ProgressBar会显示一段通用的动画(用于无法计算操作具体花费时间或着懒于计算此时间)。

Orientation:默认为Horizontal,另有一个值为Vertical,这会使进度条竖着显示。

技巧:实现Vista系统中进度条在暂停时变黄色,停止/错误时变红色的效果。

WPF没有内建机制完成这个功能,需要使用模版(参见)技术来实现。

SliderBar (WPF)/ Slider(Silverlight2.0)

    SliderBar是用户可以在一个标尺上移动光标来改变当前值。SliderBar中Minimum属性默认值为0,Maximum属性默认值为10,当然这两个默认值可以在声明标签是重写,而这两个值得设置取决于你想要选择的数所在的区间。也有Orientation属性作用同ProgressBar的相同属性,而double类型的Value属性也是用来返回选定的值,不再赘述。默认情况下,当滑块设置为水平方向时左边小右边大,当设置为垂直方向时下边小上边大,而IsDirectionReversed属性设置为true时会使这个效果反过来。除了拖动滑块外,用户也可以直接点击滑块控件改变控件的值,每次点击变化的量是一个固定值,其由LargeChange属性来设置。

SliderBar的专用的属性:

  • ToolTip:用来显示光标移动到位置当前的值。这个ToolTip的使用与配置与前文介绍ToolTip时所介绍的方式完全一致(参见)。
  • IsSnapToTickEnabled:决定光标是自动贴近刻度值还是平滑的移动到任何值。
  • Delay与Interval:用于键盘操作时,其作用与RepeatButton控件的同名属性一致。
  • TickPlacement:启用标尺的刻度,有4中值,None(默认)无标尺的简单外观,TopLeft,BottomRight与Both。举例来说,如果设置为TopLeft,当Orientation设置为Horizontal时,标尺在上方,设置为Vertical时标尺在左侧。
  • TickFrequency:确定在Slider上放置多少刻度记号,如要想每5个单位放置一个刻度就将此属性设置为5。

下面3个属性用于在当前大范围内显示一个更小的范围。当然并不限制光标只可以在这个小范围内移动。

  • IsSelectionRangeEnabled:当这个值为true时,这个小范围选择功能可用。
  • SelectionStart:指定小范围选择的开始值。
  • SelectionEnd:指定小范围选择的结束值。

这个子范围可以用在如用大范围显示媒体整体长度,用小范围显示已下载部分的情况下。

ScrollViewer控件(Silverlight 2.0)

    ScrollViewer是一个容器控件,其中可以包含其他内容,最主要的是这个控件提供了一个水平与一个垂直的滚动条,以便在内容过多无法显示全部时,让浏览者通过拖动滚动条查看全部。

    HorizontalScrollBarVisibility与VerticalScrollBarVisibility属性分别用来控制水平与垂直滚动条是否可见。默认情况下,垂直滚动条可见,水平滚动条不可见。

本文完

参考:

《WPF揭秘》

《Essential Silverlight 2中文版》

原文地址:https://www.cnblogs.com/lsxqw2004/p/4627556.html