Domanda

Ho bisogno di una lista con funzionalità simili a IPhone per Silverlight. Cioè, scorrimento animato e fare clic e trascinare per scorrere. Lo scorrimento continuerà un po 'dopo l'evento del mouse in alto in base alla "velocità" del trascinamento. Ho cercato e non ho trovato fornitori di controllo che forniscono questo. Quindi la domanda è come dovrei costruirla? Ho bisogno di alcuni suggerimenti per iniziare.

Ci sono due parti in questa domanda:

Parte 1, Come ottenere lo scorrimento animato della casella di riepilogo.

Parte 2, Come costruire un "trascinabile" Scorrendo, suppongo che dovrei mettere una tela in cima e tracciare il mouseevent e simulare un po 'di fisica. Alcuni suggerimenti qui sarebbero stati fantastici.

Grazie Larsi.

È stato utile?

Soluzione

Qualche tempo fa ho fatto un controllo che ha fatto qualcosa del genere. Tutto quello che ho fatto è stato mettere un pannello di risma in una tela. Basta regolare il canvas.top dell'intero stackpanel su un mouse (mentre il mouse è premuto). Per animare lo scorrimento dopo il passaggio del mouse, è sufficiente tenere traccia dell'importo spostato e applicare un'animazione alla proprietà canvas.top.

Altri suggerimenti

Ecco un esempio completo davvero carino per WPF che esegue sia lo scroll trascinamento che lo scrolling automatico / inerziale. Non sono sicuro che cosa succederebbe se qualcosa dovesse essere modificato per farlo funzionare in Silverlight.

http: //sachabarbs.wordpress.com/2009/12/24/friction-scrolling-now-an-wpf-attached-behaviour-too/

Solo una nota che così com'è non è possibile fare clic e trascinare la vista se si fa clic su un bambino (ad es. pulsanti) che acquisisce l'input del mouse. In realtà ho finito per modificare questo esempio in modo da poter ancora trascinare lo scorrimento quando si fa clic sui bambini, pur consentendo ai bambini di accettare l'input del mouse quando non si trascina lo scorrimento.

Questo sarà più facile in Silverlight 3 rispetto a Silverlight 2, ma non impossibile in 2.

Questo video di MIX 09, Creazione di controlli Microsoft Silverlight , dovrebbe aiutarti.

Un altro post dal sito web di Sacha Barber:

http://sachabarber.net/?p=481

Jeremiah Morrill condivide il codice che implementa lo scorrimento animato con inerzia in un ContentControl personalizzato (basato su un ScrollViewer incluso)

<ScrollViewer x:Name="sv1" Width="500" Height="285">
   <StackPanel x:Name="sp1" Width="450" Height="285">
   </StackPanel>
</ScrollViewer>

Impostando pos. e neg. margini dello stackpanel all'interno dello scrollviewer puoi creare un effetto di scorrimento.

onScroll_Up()
{
  //Change this based on your scrollviewer dimension
  if (this.sv1.ScrollableHeight < 300)
  {
    Thickness thickness = this.sp1.Margin;
    thickness.Top += 50;
    this.sv1.SetValue(StackPanel.MarginProperty, thickness);
  }   
}


onScroll_Down()
{
  if (this.sv1.ScrollableHeight > 1)
  {
    Thickness thickness = this.sp1.Margin;
    thickness.Top += -50;
    this.sv1.SetValue(StackPanel.MarginProperty, thickness);
  }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top