2015-01-01 18 views
13

Desidero un selettore ciclico personalizzato per il mio Windows Phone 8.1 (WinRT) e non sono riuscito a trovare alcuna soluzione per il momento. Voglio qualcosa di simile:Windows Phone 8.1 (WinRT): selettore ciclico personalizzato

enter image description here

Il Windows Phone Toolkit è per WP8.0 e WP8.1 Silverlight e non funziona per WP8.1 (WinRT) applicazioni (E this question è per WP8.1 Silverlight).

Ci sono i controlli DatePicker & TimePicker per WP8.1. C'è un modo per personalizzare i loro dati o qualcosa per ingannare il controllo del mio problema?

C'è una classe LoopingSelector ma sembra che non sia ancora stata implementata.

Qualsiasi soluzione o idea sarebbe apprezzata.

+0

sono le classi picker sigillato? In caso contrario, eredita una nuova classe da loro e sovrascrive i metodi in modo che facciano ciò che vuoi. – magicandre1981

+0

Come posso sapere se sono sigillati? Questa è la classe: http://msdn.microsoft.com/library/windows/apps/dn299280. È "** public class TimePicker: Control **". Quindi posso ereditarlo? –

+0

@ magicandre1981, se hai tempo di creare un esempio funzionante da quello che hai detto (e di rispondere alla domanda), potrebbe essere fantastico per tutti da usare. Grazie in anticipo. –

risposta

0

ho fatto qualcosa di simile a questo per un "selettore di data di snapping infinita", se questo ha un senso :)

Basics:

  • creare un modello di dati per visualizzare in grado di fornire con la precedente/successiva elementi
  • hanno un Canvas come radice di controllo (è veloce)
  • chiamata rendere Loaded e nuovamente sottoposti a rendering su SizeChanged
  • creare un (dipendenze) in valore selezionato
  • sottoscrivere eventi di manipolazione rilevanti (ManipulationDelta, e *Completed) e scegliere quello che ManipulationModes si desidera consentire (tradurre, forse translateintertia se si vuole inerzia)

Render :

  • rendono Screensize/ElementSize + 2 elementi (forse più)
  • loro mossa sulla ManipulationDelta e completati gli eventi
  • se un elemento lascia il limite di controllo su un lato, sposta l'ultimo elemento su quel lato all'altro capo, modificando anche i dati visualizzati (in pratica se era l'ultimo, rispetto a firstelement.getprevious)
  • in poi ManipulationCompleted trovare l'elemento più vicino al centro, e animare tutto per una posizione di 'gioco da ragazzi'
  • e, infine, impostare la vostra proprietà SelectedValue ai dati dell'elemento centrato

Questa soluzione con animazione Canvas.Left eseguito bene anche su un RT di prima generazione. In bocca al lupo!

+0

Grazie per la risposta. Ma potresti fornirmi dei codici o un link all'esempio di lavoro? Grazie in anticipo. –

+0

Siamo spiacenti, questo è stato un progetto di lavoro, quindi non posso condividere il codice :( –

+0

Grazie, ma non voglio un codice copia/incolla. Vuoi creare un progetto di esempio? Potrebbe essere fantastico per tutti uso. –

Problemi correlati