Я пытаюсь реализовать функцию перетаскивания в моем приложении и у меня проблемы на пути. Кто-нибудь может мне помочь?
У меня есть ScrollViewer и внутри него ItemsControl, а внутри ItemsTemplate у меня есть UserControl. Я хочу перетащить этот UserControl в ItemsControl. Я хочу, чтобы ScrollViewer прокручивался вниз при перетаскивании к границам ItemsControl.
protected override void OnPreviewMouseMove(System.Windows.Input.MouseEventArgs e)
{
if (this.IsMouseCaptured)
{
// Get the new mouse position.
Point mouseDragCurrentPoint = e.GetPosition(this);
if (Math.Abs(mouseDragCurrentPoint.Y - this.ActualHeight) <= 50)
{
this._scrollStartOffset.Y += 5;
_containingScrollViewer.ScrollToVerticalOffset(this._scrollStartOffset.Y);
}
if (mouseDragCurrentPoint.Y <= 50)
{
this._scrollStartOffset.Y -= 5;
_containingScrollViewer.ScrollToVerticalOffset(this._scrollStartOffset.Y);
}
}
base.OnPreviewMouseMove(e);
}
Когда я начинаю перетаскивать, вызывая DragDrop.DoDragDrop()
, прокрутка не происходит. Но когда я отключаю перетаскивание, ScrollViewer прокручивается вниз в зависимости от положения мыши.
Может быть, есть что-то, что я не принимаю во внимание при перетаскивании и захвате мыши?
Спасибо за внимание.
Гарегин