Frage

Ich brauche einen listbox mit IPhone-ähnlicher Funktionalität für Silverlight. Das heißt, animierte Scrollen und Klicken und Ziehen zu blättern. Scrolling wird ein bisschen nach der Maus nach oben Ereignisse auf der Grundlage der „Geschwindigkeit“ des Ziehens fortzusetzen. Ich habe die Suche und fand keine Kontrolle Anbieter bieten diese. So ist Frage, wie soll ich es bauen? Ich brauche ein paar Tipps, um loszulegen.

Es gibt zwei Teile auf diese Frage:

Teil 1 Wie die animierte Scrollen des listbox erhalten.

Teil 2: Wie kann ein „ziehbar“ Scrollen zu bauen, ich denke, ich soll eine Leinwand auf der Oberseite setzen und das Mouseevent verfolgen und einige Physik simulieren. Einige Hinweise hier gewesen wäre toll.

Danke Larsi.

War es hilfreich?

Lösung

Vor einiger Zeit habe ich eine Steuerung, die so etwas wie dies tat. Ich tat alles, war ein Stackpanel in einer Leinwand bringen. Nur stellen Sie die canvas.top des gesamten Stackpanel auf einem mousemove- (während Maus gedrückt wird). Um das Scrollen nach einer mouseup zu animieren, die Sie wirklich brauchen nur die Menge bewegt zu verfolgen und eine Animation der canvas.top Eigenschaft gelten.

Andere Tipps

Hier ist ein wirklich schönes vollständiges Beispiel für WPF, die sowohl schleift Scrollen und automatische flick / Trägheit zu scrollen. Ich bin nicht sicher, was passiert, wenn etwas geändert werden müsse, um es in Silverlight arbeiten.

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

Nur ein Hinweis, dass als Service-Leistung können Sie die Ansicht klicken und ziehen Sie, wenn Sie auf einem Kind klicken (z Tasten), die Erfassung der Mauseingabe. Ich landete tatsächlich diese Probe zu modifizieren, so könnte man noch blättern ziehen, wenn Sie auf Kinder klicken, während sie noch Kinder erlaubt Mauseingabe zu akzeptieren, wenn sie nicht eine Rolle ziehen.

Dies wird einfacher in Silverlight 3 als Silverlight 2, aber nicht unmöglich in 2.

Dieses Video von MIX 09, Gebäuden Microsoft Silverlight-Steuerelemente , sollten Ihnen helfen.

Ein weiterer Beitrag von Sacha Barber Webseite:

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

Jeremiah Morrill Aktien-Code, der in einem benutzerdefinierten mit Trägheit animiert implementiert scrolling Content (Templat mit einer mitgelieferten Scroll)

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

Durch po Einstellung. und neg. Ränder zum Inneren des Stackpanel Scroll Sie können einen Scroll-Effekt.

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);
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top