Мне нужно прокручивать ListView программным способом. На самом деле, я сделал частично, но он работает быстро и отличается от обычного поведения. Как я могу реализовать как обычное поведение вертикальной прокрутки listview? Мне нужна только вертикальная прокрутка. В моем коде _scrollViewer - ScrollViewer из ListView, а drawingPanel - компонент Canvas, который находится в ListView. (Холст должен быть сверху на ListView, это reqirement.)ListView Programatic Scroll в UWP
Кстати моя сторона UI так:
<grid>
<listview>
</listview>
<canvas>
</canvas>
</grid>
код Side как это:
PointerPoint startPoint;
bool pressed = false;
private void drawingPanel_PointerPressed(object sender, PointerRoutedEventArgs e)
{
pressed = true;
startPoint = e.GetCurrentPoint(this.drawingPanel);
}
private void drawingPanel_PointerMoved(object sender, PointerRoutedEventArgs e)
{
PointerPoint endPoint = e.GetCurrentPoint(this.drawingPanel);
PanListViewToNewPosition(startPoint, endPoint);
}
private void drawingPanel_PointerReleased(object sender, PointerRoutedEventArgs e)
{
pressed = false;
startPoint = null;
}
private void PanListViewToNewPosition(PointerPoint start, PointerPoint end)
{
if (pressed)
{
double verticalOffset = start.Position.Y - end.Position.Y;
verticalOffset += this._scrollViewer.VerticalOffset;
this._scrollViewer.ChangeView(null, verticalOffset, null);
}
}