プログラム的な方法でListViewをスクロールする必要があります。実際には、私は部分的に行っていますが、それは迅速に動作し、通常の動作とは異なります。リストビューのような通常の垂直スクロール動作を実装するにはどうすればよいですか?私はちょうど垂直スクロールが必要です。私のコードでは、_scrollViewerはListViewのScrollViewerであり、drawingPanelはListView上のCanvasコンポーネントです。 (キャンバスが、これはreqirementで、リストビューの一番上でなければなりません。)ところでListView UWPでのプログラムスクロール
そのような私のUI側:そのような
<grid>
<listview>
</listview>
<canvas>
</canvas>
</grid>
コードサイド:
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);
}
}