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
ySizeChanged
enSizeChanged
- 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!
No estoy seguro de si todavía necesita esto ... pero hay un proyecto WinRT LoopItemsPanel disponible aquí: http://blogs.msdn.com/b/mim/archive/2013/04/16/winrt-create-a-custom- itemspanel-for-an-itemscontrol.aspx