in WPF. How to scroll Objects in ScrollViewer by mouse-dragging, like as iPhone?

前端 未结 7 811
轻奢々
轻奢々 2020-12-30 10:59

it\'s done well to scroll by mouse-wheel or scrollbar seed-dragging. but scrolling by mouse-dragging contents on scroll view is not done. How can i implement this action?

7条回答
  •  北海茫月
    2020-12-30 11:50

    This is how I did it, XAML:

    
        
            
            
        
        
        
            
                
            
    
        
    
    

    C#:

    private void sp_MouseMove(object sender, MouseEventArgs e)
        {
            Point newMousePosition = Mouse.GetPosition((StackPanel)sender);
            tb.Text = newMousePosition.X + " | " + newMousePosition.Y;
    
            if (Mouse.LeftButton == MouseButtonState.Pressed)
            {
                if (newMousePosition.Y < oldMousePosition.Y)
                    sv.ScrollToVerticalOffset(sv.VerticalOffset + 1);
                if (newMousePosition.Y > oldMousePosition.Y)
                    sv.ScrollToVerticalOffset(sv.VerticalOffset - 1);
    
                if (newMousePosition.X < oldMousePosition.X)
                    sv.ScrollToHorizontalOffset(sv.HorizontalOffset + 1);
                if (newMousePosition.X > oldMousePosition.X)
                    sv.ScrollToHorizontalOffset(sv.HorizontalOffset - 1);
            }
            else
            {
                oldMousePosition = newMousePosition;
            }
        }
    

    where Point oldMousePosition; is a member of the window.

提交回复
热议问题