【问题标题】:Windows Phone 8.1 (WinRT): Custom Looping SelectorWindows Phone 8.1 (WinRT):自定义循环选择器
【发布时间】:2015-10-12 19:52:41
【问题描述】:

我想要一个用于我的 Windows Phone 8.1 (WinRT) 的自定义循环选择器,目前我找不到任何解决方案。我想要这样的东西:

Windows Phone Toolkit 适用于 WP8.0 和 WP8.1 Silverlight,不适用于 WP8.1 (WinRT) 应用(而this question 适用于 WP8.1 Silverlight)。

WP8.1 有DatePicker & TimePicker 控件。有什么方法可以自定义他们的数据或其他东西来欺骗控制我的问题吗?

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

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

【问题讨论】:

  • 选择器类是密封的吗?如果没有,请从它们继承一个新类并覆盖这些方法,以便它们执行您想要的操作。
  • 我怎样才能找到它们是否被密封?这是课程:msdn.microsoft.com/library/windows/apps/dn299280。它是“public class TimePicker : Control”。那我可以继承吗?
  • @magicandre1981,如果您有时间根据您所说的内容创建一个工作示例(并回答问题),那么每个人都可以使用它。提前谢谢你。
  • 我才开始看一些关于手机开发的视频。所以我不是你应该问这样一个例子的人。

标签: c# xaml windows-runtime windows-phone-8.1 loopingselector


【解决方案1】:

不确定您是否还需要这个...但这里有一个 WinRT LoopItemsPanel 项目可用:http://blogs.msdn.com/b/mim/archive/2013/04/16/winrt-create-a-custom-itemspanel-for-an-itemscontrol.aspx

【讨论】:

    【解决方案2】:

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

    基础知识:

    • 创建要显示的数据模型,它可以为您提供下一个/上一个元素
    • Canvas 作为您的控制根(速度很快)
    • 调用渲染Loaded 并在SizeChanged 上重新渲染
    • 为选定的值创建(依赖)属性
    • 订阅相关操作事件(ManipulationDelta*Completed)并选择什么 ManipulationModes 你想允许(翻译,如果你想要 intertia,也许 translateintertia)

    渲染:

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

    这个带有动​​画 Canvas.Left 的解决方案即使在第一代 Surface RT 上也表现良好。祝你好运!

    【讨论】:

    • 感谢您的回答。但是您能否提供一些代码或链接到工作示例?提前谢谢你。
    • 对不起,这是一个工作项目,所以我不能真正分享代码:(
    • 谢谢,但我不想要复制/粘贴代码。你会创建一个示例项目吗?每个人都可以使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多