Ist es möglich, in einer WPF-Listenansicht Smooth Scroll zu implementieren?
Ist es möglich zu implementieren, glatten Blättern in einer WPF - listview
wie es funktioniert in Firefox?
Wenn Sie den Firefox-browser, die alle listview
Elemente und halten Sie die mittlere Maustaste gedrückt (aber nicht zu release), und ziehen Sie es, es sollte reibungslos Blättern der listview
Elemente. Wenn Sie es loslassen sollte aufhören.
Wie es aussieht wird das nicht möglich ist in winforms, aber ich Frage mich, wenn es verfügbar ist in WPF?
InformationsquelleAutor der Frage Joan Venge | 2009-06-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erreichen, smooth-scrolling -, aber Sie verlieren Element-Virtualisierung, also im Grunde sollten Sie diese Technik nur, wenn Sie haben einige Elemente in der Liste:
Info hier: Smooth-scrolling auf Listenfeld
InformationsquelleAutor der Antwort Pop Catalin
Es ist tatsächlich möglich, das zu tun, was Sie fordern, obwohl es erfordert einen fairen Betrag von benutzerdefinierten code.
Normalerweise in WPF ein ScrollViewer verwendet, was bekannt ist als Logische Scrollen, das heißt, es geht um scroll-Element für Element anstatt durch eine offset-Betrag. Die anderen Antworten decken einige der Möglichkeiten, die Sie können ändern Sie die Logische Scrolling-Verhalten in der Physischen Scrollen. Die andere Möglichkeit ist Gebrauch zu machen von der ScrollToVertialOffset und ScrollToHorizontalOffset Methoden, die sowohl ScrollViwer und IScrollInfo.
Zur Umsetzung der größere Teil, das scrollen, wenn die Maus-Rad gedrückt wird, die wir brauchen, um machen verwenden des MouseDown-und MouseMove-Ereignisse.
In der MouseDown, den wir aufnehmen werden die aktuellen Maus-position, die wir als relative Punkt zu bestimmen, in welche Richtung wir Blättern in. In der Maus bewegen, wir gehen, um das ScrollViwer Komponente von ListView und dann Scrollen Sie entsprechend.
Gibt es einige Gebiete, die es fehlt, wie es nur ein proof of concept aber es sollte auf jeden Fall den Einstieg in die richtige Richtung. Zu haben, es ständig zu scrollen, sobald der Mauszeiger Weg von der ersten MouseDown-Punkt, die Scroll-Logik könnte es gehen, in ein DispatcherTimer-oder etwas ähnliches.
InformationsquelleAutor der Antwort rmoore
Versuchen Sie, die ScrollViewer.CanContentScroll angefügte Eigenschaft zu false auf die ListView. Aber wie Pop Catalin sagte, Sie verlieren Element-Virtualisierung bedeutet, dass für alle Elemente in der Liste geladen und bevölkerten auf einmal, nicht als eine Zusammenstellung von items, die benötigt werden, um angezeigt werden - wenn also die Liste ist riesig, es könnte dazu führen, dass einige Speicher-und performance-Probleme.
InformationsquelleAutor der Antwort Eddie
Wenn Sie verwenden .NET 4.5 (oder 4.0, wenn Sie bereit sind, zu hacken ein bisschen), dann gibt es eine Antwort hier drüben.
InformationsquelleAutor der Antwort Zodman
versuchen Sie, die listview Höhe wie auto und wickelte Sie in ein scrollviewer.
Nicht vergessen zu erwähnen, die Höhe der ScrollViewer
Hoffe, das hilft....
InformationsquelleAutor der Antwort user3405012