24

さて、それで、誰もがScrollViewerのスクロール位置を設定する方法を知っています。エッセイとブログエントリ全体が書かれていますScrollViewer.ScrollToVerticalOffset()、そしてそれについての答えを持った良い数百の質問がここにあります。

だから、私は入力します:

myScrollViewer.ScrollToVerticalOffset(280);

...そしてそれはとても親切にその場所にスクロールします。

問題は、現在どのプロパティに280が含まれているので、後で取得できるかということです。

(ヒント:myScrollViewer.VerticalOffsetContentVerticalOffsetは両方とも0です。myScrollViewer.ScrollInfo単純なものは存在しません。)

編集:どうやら私はより詳細なデモンストレーションが必要です。

private void btnTest_Click(object sender, RoutedEventArgs e) {
  double scrollTarget = 280;
  MessageBox.Show("Target: " + scrollTarget.ToString());
  myScrollViewer.ScrollToVerticalOffset(scrollTarget);
  MessageBox.Show("Now: " + myScrollViewer.VerticalOffset);
}

これは意図したとおりにスクロールすることを繰り返し述べなければなりません。私が望むところに正確に行きます。ただし、myScrollViewer.VerticalOffsetは0に設定されています。

4

3 に答える 3

26

myScrollViewer.UpdateLayout()解決策は、後に手動で呼び出すことmyScrollViewer.ScrollToVerticalOffset()です。すると、myScrollViewer.VerticalOffset期待値になります。

于 2012-11-04T05:58:33.693 に答える
4

LayoutUpdatedイベントが発生した後、VerticalScrollBarVisibility="Visible"とVerticalScrollOffsetが280になることを確認してください。

于 2012-10-31T06:00:39.240 に答える
0

ウィンドウのコンストラクターでmyscrollViewerを呼び出していると思います。

ボタンをクリックするとき、またはウィンドウのロードされたメソッドでそれらを呼び出すことができるため、値は垂直オフセット値で更新されます。つまり、これらの値は、ウィンドウを初期化した後に更新されます。

于 2012-10-31T06:14:56.817 に答える