4

イベントscrolltoVerticalOffsetまたはscrolltoHorizo​​ntalOffsetは、scrollviewerの値を変更しません。値Horizo​​ntalOffsetとVerticalOffsetが変更されるイベントを教えてください。LayoutUpdated()メソッドを試しましたが、無限ループになります。

前もって感謝します

4

2 に答える 2

2

一般に、との値はHorizontalOffset、(またはその他の)が値を更新してInvalidateScrollInfo()を呼び出した後のイベントVerticalOffset中を除いて、更新されません。唯一の例外は、これらのそれぞれのDependencyPropertyが遅延スクロール中に更新されることです(ただし、驚くべきことに、対応するCLRプロパティは更新されません)が、これはおそらくあなたの場合には当てはまりません。LayoutUpdatedScrollContentPresenterIScrollInfo

ScrollToHorizontalOffsetWPFにはまたはScrollToVerticalOffsetイベントはありませんが、これらの名前にはScrollViewerメソッドとaRoutedCommandの両方があります。コマンドバージョンとメソッドバージョンの両方がリクエストを記憶し、次のLayoutUpdatedイベントで実行するため、スクロールが確実に行われるようにするだけの場合は、コマンドを送信するか、メソッドを呼び出します。

を確認したい場合、HorizontalOffsetまたは実際に必要に応じて更新されている場合は、次のように、値が更新された後に発生するをVerticalOffsetキャッチできます。ScrollChangedEvent

scrollViewer.ScrollChanged += (obj, e) =>
{
  // Get offset information from 'e' or from scrollViewer
}

「LayoutUpdated()メソッド」とは何かを説明していなかったため、「LayoutUpdated()メソッドを試しましたが、無限ループになります」の意味がわかりませんでしたが、上記の情報でイベントの順序が決まります。明確にし、解決策に向かう途中であなたを助けます。いずれにせよ、決定を下すために必要なすべての情報は、ScrollChangedイベントから入手できる必要があります。

于 2010-04-14T18:44:29.723 に答える
1

解決策を投稿してくれてありがとう、私は同じ問題に遭遇しました。LayoutUpdated() メソッドはフレームワークによって無限ループで呼び出されます。LayoutUpdated() の代わりに ScrollChanged() を使用すると、問題が修正されます。

于 2010-05-08T03:42:54.960 に答える