指定したIDを持つControlをScrollViewerの先頭にピン止めしたいのですが、どのような方法を取れば対象となるUIElementの表示位置を固定できるでしょうか?

動きの例としては、以下の様なイメージです。

  1. ItemsSourceObservableCollection<int>をBindingしたListViewに、1~1000の数値がTextBlockで縦方向のリストとして表示されている
  2. 1~1000が表示されたTextBlockは、一定時間ごとにランダムに順番が入れ替わる
  3. ユーザーは特定の番号をTextBoxへの入力などで指定すると、その番号の表示されたTextBlockがぴったりListViewの一番上に表示され、その番号の順番が入れ替わっても、その状況が保持されつづける(=自動的に適切な位置にスクロールする)

ListView.ItemContainerGenerator.ContainerFromItem(...)で取得したVisualVisual.PointToScreen(...)で変換して、その位置にScrollViewer.ScrollToVerticalOffset(...)をすれば…
という事を考えたのですが、順番入れ替えを検知する方法がINotifyCollectionChangedしか見つからず、CollectionChangedイベントを起点にUIElementを取ろうとするとVisualTreeの作成途中なのか、上手くコントロールを取得できませんでした。

このような場合に上手く機能を実現するには、どのような方法があるでしょうか?