Silverlight 3 und Scrollrad Support [mousewheel]

Seit Silverligth 3 gibt es eine MouseWheel Event.  Vorher gab es nicht mal das. Der Workaround z.B. für Deep Zoom lief über die HTML Browser Bridge nach Jscript.

maus Obwohl es das Event nun gibt, das man abfangen und behandeln kann, sind Standard Controls wie z.B. die Listbox nicht mit einem Standard Maus rollen verhalten ausgestattet. Es wird zwar das Event gefeuert, aber die Listbox scrollt nicht. Ähnliches gilt für andere Controls wie eine Textbox mit viel Text. Erst mit Silverlight 4 versprechen die Redmonder Entwickler native Support

Built-in MouseWheel Support on ScrollViewer, TextBox, ComboBox, Calendar, DatePicker

Wie steht es heute?

Ich habe eine recht nette Lösung über ein Blend Behavior gefunden.

http://compiledexperience.com/blog/posts/A-Mouse-Wheel-Blend-Behavior

oder http://silverlightplayground.boschin.it/post/2009/07/10/Silverlight-30-RTW-An-universal-MouseWheelScrolling-behavior.aspx

Der Vorteil ist, nur einmal als DLL kompilieren und dann einfach das Behavior an das zu scrollende Control attachen. Mit Expression Blend ein Kinderpsiel.

Ein andere Ansatz ist das MouseWheel Event zu verwenden und das Scrollen manuell anstossen. Dazu kann man die Eigenschaft

ScrollToVerticalOffset der Scrollbars verwenden. Wesentliches Problem ist das man dafür erst die Listbox in sein Template zerlegen muss um an den enthaltenen Scrollbar heranzukommen.

Das ganze als Antwort auf meinen Expression Blend Schulungsteilnehmer Timo.

Kommentar schreiben