构建自定义控件与面板:从圆形分钟计时器到布局原理
一、构建圆形分钟计时器
想象一下,你需要构建一个如图所示的圆形计时器,它从 0 秒开始,计数到 60 秒。这个控件有广泛的应用,听起来是个有趣的项目。
乍一看,由于 WPF 没有以圆形方式计时的控件,你可能认为需要创建一个自定义控件。但我们可以先回顾之前的思考流程,也许不需要创建新控件,而是增强现有控件来实现。
(一)选择合适的基础控件
我们将需求抽象为需要一个能显示给定范围内值(这里是 0 到 60)的控件。WPF 中有很多符合范围控件要求的控件,如 ScrollBar、Slider 和 ProgressBar。
- ScrollBar 不太合适,因为我们需要显示值,而不是通过交互方式控制当前进度。
- Slider 也是交互式的值更改控件,也不符合需求。
- 因此,ProgressBar 是更有希望的选择。我们也可以创建一个从 RangeBase 派生的新控件,但这需要重新实现 ProgressBar 的很多功能。
(二)增强和扩展 ProgressBar
很明显,可以通过扩展和增强 ProgressBar 来创建径向分钟计时器。默认情况下,ProgressBar 显示为垂直或水平条,我们需要的是环形显示。首先要确定环形是控件的一部分还是其中包含的数据。这里,环形是控件容器,所以从 ControlTemplate 入手创建环形是个好的开始。
(三)创建“进度环”的控件模板
创建“进度环”的控件模板有几种选择:
- 表示进度的环形实际上是一个从 0 度到 360 度的弧,可以用粗
超级会员免费看
订阅专栏 解锁全文
1001

被折叠的 条评论
为什么被折叠?



