c# xaml windows-runtime windows-phone-8.1 loopingselector

c# - Windows Phone 8.1(WinRT): Selector de bucle personalizado



xaml windows-runtime (2)

Quiero un selector de bucle personalizado para mi Windows Phone 8.1 (WinRT) y no pude encontrar ninguna solución por el momento. Quiero algo como esto:

Windows Phone Toolkit es para WP8.0 y WP8.1 Silverlight y no funciona para WP8.1 (WinRT) aplicaciones (y esta pregunta es para WP8.1 Silverlight).

Hay controles DatePicker y TimePicker para WP8.1. ¿Hay alguna forma de personalizar sus datos o algo para engañar al control de mi problema?

Hay una clase LoopingSelector pero parece que aún no está implementada.

Cualquier solución o idea sería apreciada.


Hice algo como esto para un "selector de fecha de ajuste infinito" si tiene sentido :)

Lo esencial:

  • crea un modelo de datos para mostrar que puede proporcionarte los elementos siguientes / previos
  • tener un Canvas como su raíz de control (es rápido)
  • call render Loaded y SizeChanged en SizeChanged
  • crear una propiedad (dependencia) para el valor seleccionado
  • suscribirse para eventos de manipulación relevantes ( ManipulationDelta , y *Completed ) y elegir qué ManipulationModes desea permitir (traducir, quizás traducirintertia si quiere intertia)

Hacer:

  • render screensize / elementsize + 2 elementos (tal vez más)
  • moverlos en el manipulationdelta y eventos completados
  • si un elemento deja el límite de control en un lado, mueva el último elemento de ese lado al otro, al mismo tiempo que cambia los datos mostrados (básicamente, si fue el último, que el de firstelement.getprevious)
  • En la manipulación, encuentre el elemento más cercano al centro y anime todo en una posición de "ajuste"
  • y finalmente configure su propiedad de valor seleccionado a los datos del elemento centrado

Esta solución con animación de Canvas.Left tuvo un buen rendimiento incluso en Surface RT de primera generación. ¡Buena suerte!