0

Fare etkileşimini kullanarak, ScrollViewer'ın ScrollBar'ını yatay olarak sürüklerken, ScrollViewer'ın içeriği küçük adımlarda kaydırılır. Uygulama dokunmatik etkileşim ile çalıştırılırsa, kaydırma herhangi bir adım/boşluk olmadan sorunsuz olur. Dokunma etkileşimi ile yapıldığı gibi, adımları/boşlukları olmadan fareyi kullanarak nasıl gezinebilirim?Fareyi kullanırken adımlar/boşluklar olmadan bir ScrollViewer kaydırma

Masaüstü: enter image description here

Fare: enter image description here

+0

ScrollViewer.CanContentScroll = "False", bunu denediniz mi? –

cevap

0

bir geçici çözüm ScrollViewer ait ScrollBar gizlemek ve doğrudan tıklama ve sürükle fare olayları kullanmaktır. WaveformScroller ScrollViewer'dır. WaveformCanvas kaydırılmış kontroldür.

Vector2 lastDragPoint; 
bool pointerPressed; 

WaveformCanvas.PointerPressed += (sender, args) => 
{ 
     WaveformCanvas.CapturePointer(args.Pointer); 
     lastDragPoint = args.GetCurrentPoint((UIElement)sender).Position.ToVector2(); 
     pointerPressed = true; 
}; 

WaveformCanvas.PointerMoved += (sender, args) => 
{ 
    if (pointerPressed) 
    { 
     var newDragPoint = args.GetCurrentPoint((UIElement)sender).Position.ToVector2(); 
     var deltaX = newDragPoint.X - lastDragPoint.X; 
     var newOffset = WaveformScroller.HorizontalOffset - deltaX; 
     WaveformScroller.HorizontalOffset = WaveformScroller.HorizontalOffset - deltaX; 
    } 
}; 

WaveformCanvas.PointerReleased += (sender, args) => 
{ 
    pointerPressed = false; 
    WaveformCanvas.ReleasePointerCapture(args.Pointer); 
}; 
İlgili konular