2012-10-31 204 views
18

さて、誰もがScrollViewerのスクロール位置を設定する方法を知っています。すべてのエッセイとブログエントリはScrollViewer.ScrollToVerticalOffset()について書かれており、ここでは数百の質問があります。C#/ WPF - ScrollViewerのスクロール位置を取得しますか?

myScrollViewer.ScrollToVerticalOffset(280); 

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

だから、私は入力してください。

質問は、現在、28のプロパティが含まれているので、後で取得できますか?

(ヒント: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に設定されています。

+0

MSDN、 "VerticalOffset"または "ContentVerticalOffset"を読むと正しい値が得られるはずです...これらのプロパティにどの時点でアクセスしていますか(0の場合)? –

答えて

23

の後に手動でmyScrollViewer.UpdateLayout()を呼び出す方法があります。次に、myScrollViewer.VerticalOffsetは期待値を持ちます。

4

LayoutUpdatedイベントが発生した後、VerticalScrollBarVisibility = "Visible"およびVerticalScrollOffsetが280になるようにしてください。

0

私はあなたがウィンドウのコンストラクタでmyscrollViewerを呼び出すと思います。

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

関連する問題