Windows Phone 8.1(WinRT):自定义循环选择器

13

我希望能够定制一个循环选择器,用于我的Windows Phone 8.1 (WinRT),目前我找不到任何解决方案。我需要像这样的东西:

enter image description here

Windows Phone Toolkit适用于WP8.0和WP8.1 Silverlight,但不适用于WP8.1(WinRT)应用程序(此问题是针对WP8.1 Silverlight的)。

WP8.1有DatePicker & TimePicker控件。有没有办法自定义它们的数据或者通过一些方式来解决我的问题?

有一个LoopingSelector类,但似乎还没有实现。

任何解决方案或想法都将不胜感激。


选择器类是密封的吗?如果不是,请从它们继承一个新类,并覆盖方法,以使其符合您的需求。 - magicandre1981
我该如何找出它们是否被密封?这是类:http://msdn.microsoft.com/library/windows/apps/dn299280。它是 "public class TimePicker : Control"。那么我可以继承它吗? - Vahid
@magicandre1981,如果您有时间从所说的内容中创建一个可行的示例(并回答问题),那对于大家来说都将非常棒。预先感谢您。 - Vahid
我只是开始看一些关于手机开发的视频。所以我不是你应该问这个例子的人。 - magicandre1981
2个回答

1

0

如果这有意义的话,我为“无限捕捉日期选择器”做了类似的事情 :)

基础:

  • 创建一个数据模型来显示下一个/上一个元素
  • Canvas作为您的控件根(它很快)
  • SizeChanged时调用渲染Loaded和重新渲染
  • 为所选值创建(依赖)属性
  • 订阅相关操作事件(ManipulationDelta*Completed)并选择您想要允许的ManipulationModes(例如平移、也许是平移惯性)

渲染:

  • 渲染屏幕大小/元素大小+2个元素(可能更多)
  • 在操作事件和完成事件中移动它们
  • 如果一个元素离开控件边界的一侧,将该侧的最后一个元素移动到另一端,并同时更改显示的数据(基本上,如果它是最后一个,则为firstelement.getprevious)
  • 在操作完成时找到距离中心最近的元素,并将所有内容动画到“捕捉”位置
  • 最后,将您的selectedvalue属性设置为居中元素的数据

即使在第一代Surface RT上使用Canvas.Left进行动画处理,这种解决方案也表现良好。祝你好运!


谢谢您的回答。但是,您能否提供一些代码或链接到工作示例?非常感谢您的帮助。 - Vahid
抱歉,这是一个工作项目,所以我不能分享代码 :( - Tamás Deme
谢谢,但我不想要复制/粘贴的代码。你能否创建一个示例项目?这对每个人来说都会很棒。 - Vahid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接