Laden...

Erkennen ob ScrollViewer geklickt wird

Erstellt von ByteDevil vor 4 Jahren Letzter Beitrag vor 4 Jahren 628 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren
Erkennen ob ScrollViewer geklickt wird

Hi,

ich habe ein Control entworfen, dass Bilder in Images in einer ListBox horizontal auflistet. Über dieser ListBox ist ein Image, welches immer eines der Bilder in groß anzeigt. Der User kann eines der Bilder in der ListBox anklicken, dann wird es in dem großen Image angezeigt. Eine TimeSpan gibt an, nach welcher Zeit automatisch das nächste Bild angezeigt wird. Da eventuell mehr Bilder in der ListBox sind, als nebeneinander angezeigt werden können, soll bei Bedarf eine horizontale ScrollBar erscheinen. Wird automatisch das nächste Bild angezeigt, welches ausserhalb des sichtbaren Bereiches ist, scrolle ich automatisch zu diesem Element.
Jetzt mein Problem: Hält der User die linke Maustaste auf dem Scrollbalken, will ich nicht automatisch scrollen. Nur wie detektiere ich das? Es ist mir gelungen eine Referenz auf den eingebauten ScrollViewer der ListBox zu kriegen. Doch weder der, noch die ListBox haben eine Property wie "IsScrolling" oder sowas. Wie kann ich herausfinden, ob der User die Maus auf dem Scrollbalken einer ListBox gedrückt hält?

Folgender Code scrollt zum selektierten Element:

private void Lsb_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (lsb.Items.Count > 0 && e.AddedItems.Count > 0)
            {
                var newSelectedItem = e.AddedItems[0];
                if (newSelectedItem != null)
                    (sender as ListBox).ScrollIntoView(newSelectedItem);
            }
        }

Edit: "MouseDown" des ScrollViewers feuert leider nicht, wenn ich direkt auf den ScrollBar drücke.