我一直在仔细搜索网络,以获取有关此方面的任何指导,讨论或经验,我认为我可以肯定地说没有任何东西。
我们正在为UWP开发一套控件,我们计划将其开源并免费提供。我们正在构建的控件之一是TimeSpanPicker
控件,其外观和行为本质上与TimePicker
控件类似,但是它不仅限于一天中的某个时间(即24小时间隔),还允许用户编辑任意内容TimeSpan
。
通过使用内置TimePicker
控件作为参考,从Windows Runtime API的可见元数据中整理出的内容,使我意识到涉及以下类型的组件:
Control
PickerFlyoutBase
Control
我意识到我需要模仿这种模式并为选择器控件编写这三个组件,但是我找不到有关这些部分如何组合在一起的信息,而且仅从API表面来看,我认为不可能弄清楚。
具体来说,我想了解的主要内容是:
TimePickerFlyout
纳入TimePicker
班级?我在选择器控件的默认模板内的任何地方都看不到弹出按钮的引用。TimePickerFlyoutPresenter
控制播放,以及它是如何并入TimePickerFlyout
类?本TimePickerFlyout
类没有模板-那么它是如何实例化和与通信TimePickerFlyoutPresenter
控制?ShouldShowConfirmationButtons
和OnConfirmed
虚拟方法的预期用途是PickerFlyoutBase
什么?当我在具体的实现中覆盖它们时,就永远不会调用它们。如有任何指导,我将非常感谢!
因此,由于有几个人要求我跟进此事,因此在Jim Walker(MSFT)的帮助下,我最终终于能够弄清所有这些问题。这已经很长时间了,但是我现在决定重新审视这个问题,并最终完成那些我正在研究的工作TimeSpanPicker
和TimeSpanEditor
控制。
https://github.com/IDeliverable/UwpControls
运行该TestHost
项目以查看两个控件都在起作用。
该存储库还包含其他一些控件。包含TimeSpanPicker
和TimeSpanEditor
控件的部分在这里:
https://github.com/IDeliverable/UwpControls/tree/master/src/IDeliverable.Controls.Uwp.TimeSpanPicker
对于希望对如何构建自定义选择器控件感兴趣的任何人,该代码都有望成为一个很好的示例,但是对于需要TimeSpan
向其应用程序添加编辑功能的任何人,这些控件也应该是有用的。我真的带着这些控件去了城镇,忙着细节和非显而易见的事情,例如可访问性,对多种输入模式(触摸,键盘,鼠标)的支持,系统主题合规性,全面的模板支持等。
这两个控件的文档目前仍在开发中。
我计划很快将这些控件打包为NuGet包,但现在,您必须将它们作为源代码使用。我还将检查是否有将它们合并到Window Community Toolkit中的兴趣。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句