WPF教学|自定义日期选择控件SmartDate编程全过程 |全干货高级技巧 |进阶Next Level!|GitHub源码公开
控件名称:SmartDate
作者:Vicky&James
源码链接:https://github.com/vickyqu115/smartdate
Content
- 教学视频介绍
- Overview
- WPF SmartDate
- 原创教学系列
- 贡献者介绍
- 沟通与支持
教学视频介绍
WPF SmartDate
教程我们提供了方便反复学习和练习的教学视频全过程,项目源代码也已经通过GitHub 仓库对外公开。
Overview
从「构建 ThemeSwitch 白天黑夜切换按钮」开始,这已经是我们 WPF 教程系列的第五期视频了。我们的视频系列主要涵盖了基于 ContentControl 和 ItemsControl 派生的元素,例如按钮、滑块和列表框等。而本期视频,我们将深入探讨像 DatePicker 这样具备复杂功能的控件。因此,相较于前几期,本期视频将更具挑战性。
但也无需过于担心。我们为这个教程视频做了非常详尽的准备,所有的过程、内容和解释都尽可能详细,通过反复观看和实践,将能够熟练掌握视频中介绍的方法和概念。
WPF SmartDate
自 WPF 诞生近20年来,多数基于 Template 的 Control、ContentControl 和 ItemsControl 派生的控件仍然被广泛使用,这些控件几乎不受类、接口和提供的 Dependency Property 属性的限制。这展示了 WPF 设计的精确和实用性。特别是,WPF 的模板和层次结构设计非常适合大多数控件,如按钮、组合框和列表框等。
然而,在处理像 DatePicker 这样要求复杂功能并需要详细定制的控件时,使用基本控件时往往感受到一定的限制。上一期的Riot Slider教程中的 Slider 控件功能单一,模板结构简单,因此剖析该控件的内部结构并进行自定义是一个非常有价值的过程。但相比之下,DatePicker 的内部结构类似于一个小型应用程序,分析和提取其基本模板结构就成为一项非常艰巨的任务。这无疑也为 WPF 的研究和分析提供了绝佳的训练机会。
如果你打算分析并研究 DatePicker 的基本控件结构,这无疑是一个很好的方法。此外,你还可以结合我们这一期的 SmartDate 视频中介绍的控件构成方法,这将大大提升对基本控件的理解以及WPF 编程综合实力。
顺序 | 主要任务 | 主要内容概述 |
---|---|---|
1 | WPF Application | 创建程序入口结构和创建及执行 Application 实例 Run() |
2 | WPF Class Library | CustomControl 的基本结构:AssemblyInfo.cs, Generic.xaml, CustomControl |
3 | SmartDate | 替换 DatePicker 衍生的 CustomControl |
4 | CalendarSwitch | 从 ToggleButton 衍生的 CustomControl,管理 SmartDate 控制的弹出切换 |
5 | Popup | 包含日历的基本控件 |
6 | CalendarBox | 从 ListBox 衍生的 CustomControl,通过 ItemsPanelTemplate 指定 ItemsPresenter 的容器为 UniformGrid,包括在 ControlTemplate 中的日历移动按钮 |
7 | CalendarBoxItem | 作为 CalendarBox 的 ItemsContainer 的从 ListBoxItem 衍生的 CustomControl |
8 | ChevronButton | 从按钮衍生的 CustomControl,用于转到前一个或下一个月 |
9 | DayOfWeek | 从标签衍生的 CustomControl,显示一周的日子 |
通过上述内容可以看出,SmartDate不仅本身采用了CustomControl,其内部的子控件也同样采用了CustomControl设计。这种设计充分展示了WPF CustomControl设计的理念,是一个非常好的示例。
希望通过本期教程视频,大家能详细了解CustomControl的具体实现。如果需要更深入了解Template概念,建议先学习我们之前的RiotSlider教程视频。
原创教程系列
到目前为止,我们已经发布了五期教程系列,具体内容如下:
No. | Platform | Title | BiliBili |
---|---|---|---|
1 | WPF | Theme Switch | Link |
2 | WPF | Riot PlayButton | Link |
3 | WPF | Magic Navigation Bar | Link |
4 | WPF | Riot Slider | Link |
5 | WPF | Smart Date | Link |
贡献者介绍
我们致力于分享高质量的WPF、Blazor以及基于XAML的跨平台编程知识。目前,我们在BiliBili视频网站开设了频道,定期发布各种编程教学视频。从选题策划、示例源代码的准备、记录应用程序的实现过程、进行中英文配音、添加多语言字幕、视频编辑、缩略图制作到视频上传,这一系列工作都由我们亲自完成。视频涉及的源代码也已通过GitHub公开,以供大家学习和使用。在这个分享过程中,我们找到了乐趣和使命感,大家的支持与鼓励也成为了我们持续创作的动力。我们衷心希望通过我们的分享,能够帮助到更多热爱编程的朋友们。
沟通与支持
我们随时保持沟通渠道开放。大家可以通过以下方式与我们互动: