Windows ストア アプリケーションで scrollviewer を使用していますが、SetHorizontalOffset 関数を何度か呼び出した後、scrollviewer が水平スクロールを変更しません。縦スクロールでも同じです。誰もそれを操作する方法を知っていますか? オフセットの可視性のためだけの scrollviewer スクロールである可能性があります (ユーザーがオフセットを表示できることがわかっている場合、まったくスクロールしないことを意味します)
質問する
569 次
1 に答える
0
ScrollViewer のオフセットが 1 フレーム遅れているようです。
以下のコードがフレームごとに実行される場合、diffPrevDesiredActual は常に 0 です。つまり、 によって提供される値はChangeView
すぐには反映されません。
...
var scrollPosition = /*some new value*/;
MyScrollViewer.ChangeView(null, scrollPosition, null, true);
var current = MyScrollViewer.VerticalOffset;
var diffDesiredActual = scrollPosition - current;
var diffPrevDesiredActual = previous - current;
previous = scrollPosition;
...
private double previous;
スクロール オフセットを変更したときに画面上で何もアニメーション化されていない場合は、何かが新しいフレームの描画をトリガーするまで、ScrollViewer が新しい値を表示しない可能性があります。この仮説を検証するには、フレームが常に描画されるように、無限のアニメーション (ProgressRing など) を追加してみてください。
于 2013-11-06T20:43:28.830 に答える