DataGridには多くの項目があり、プログラムではSelectedItem
にスクロールする必要があります。私はのStackOverflowとGoogleで検索しましたし、次のように解決策があるのscrollIntoViewようだ:選択した項目にフォーカスがあるまで上または下のDataGridをスクロールWPF DataGridをスクロールして、選択した項目を上に表示します
grid.ScrollIntoView(grid.SelectedItem)
を。ただし、選択したアイテムに関連する現在のスクロール位置によっては、DataGridのScrollViewerで最後に表示されるアイテムが選択されたアイテムになることがあります。選択したアイテムがScrollViewerの最初の表示アイテムになるようにします(これを可能にするのに十分な行がDataGridにあると仮定します)。だから私はこれを試してみました:
'FindVisualChild is a custom extension method that searches in the visual tree and returns
'the first element of the specified type
Dim sv = grid.FindVisualChild(Of ScrollViewer)
If sv IsNot Nothing Then sv.ScrollToEnd()
grid.ScrollIntoView(grid.SelectedItem)
まず私は、DataGridの最後までスクロールし、唯一、私はのSelectedItemにスクロールしない、のSelectedItemは、データグリッドの上部に表示され、その時点で。
私の問題は、DataGridの最後までスクロールするとうまくいくが、その後は選択した項目にスクロールしても必ずしも機能しないということだ。
この問題を解決するにはどうすればよいですか、またはトップポジションの特定のレコードにスクロールするための代替戦略が他にありますか?