Laden...

WrapPanel scrollen via drag/drop

Erstellt von userid4106 vor 12 Jahren Letzter Beitrag vor 12 Jahren 860 Views
U
userid4106 Themenstarter:in
457 Beiträge seit 2006
vor 12 Jahren
WrapPanel scrollen via drag/drop

Hallo,

ich habe ein WarpPanel was in einem Scrollviewer geschachtelt ist. Jetzt habe ich die Situation, dass ich in dem WP Controls via Drag&Drop hin und herschieben will. Das kann dann auch mal in den nicht sichtbaren Bereich fallen. Wie kann ich eine Art Autoscroll umsetzen?

Hat jemand eine Idee wie ich das umsetzen kann?

1.378 Beiträge seit 2006
vor 12 Jahren

Ich hätt mal folgendes versucht:

Scrollviewer hört auf MouseMove Events wenn zB linke Mouse Down und MousePosition > Rand dann Scroll um die Differenz und evt. setze MousePosition wieder zurück? sodass die Maus nie über den Rand raus bewegt werden kann.

Lg, XXX

U
userid4106 Themenstarter:in
457 Beiträge seit 2006
vor 12 Jahren

Hallo,

erstmal danke für den Tip. Ich habe jetzt folgenden Code zusammen gebastelt:

Wenn die Maus wirklich bewegt wird und dabei die linke Taste gedrückt ist:


        private void ScrollBar_Yards_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                if (e.GetPosition(null).Y > Mausposition_zu_scrollen.Y)
                {
                    //nach unten scrollen
                    ScrollBar_Yards.ScrollToVerticalOffset(ScrollBar_Yards.VerticalOffset + 10);//(Mausposition_zu_scrollen.Y - e.GetPosition(null).Y));
                }
                else if (e.GetPosition(null).Y < Mausposition_zu_scrollen.Y)
                {
                    //nach oben scrollen
                    ScrollBar_Yards.ScrollToVerticalOffset(ScrollBar_Yards.VerticalOffset - 10);//(Mausposition_zu_scrollen.Y - e.GetPosition(null).Y));
                }
            }
        }

Und damit ich weiß ob es auf- oder abwärts gehen soll:


        private void ScrollBar_Yards_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                Mausposition_zu_scrollen = e.GetPosition(null);   
            }
        }

Allerdings klappt das leider nicht wenn ich gerade ein Element im Zugriff habe und verschiebe. Wenn ich auf eine leere Stelle klicke, dann klappt es zwar aber das könnte auch besser sein..

Noch eine Idee?