WPFでDataGridのメソッドからScrollChangedのイベントが取れない。
なので、VisualTreeHelperクラスを使って、親クラスから辿って取得した。
DataGridのイベントでアタッチ
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.LoadingRow += this.AssociatedObjectUnloadingRow;
}
ScrollChangedを取得
どのイベントで取得するかは、用途により変更してください。
今回は行の読み込みイベントで行っている。
private void AssociatedObjectUnloadingRow(object sender, DataGridRowEventArgs e)
{
Decorator child = VisualTreeHelper.GetChild(AssociatedObject, 0) as Decorator;
ScrollViewer childSV = child.Child as ScrollViewer;
childSV.ScrollChanged += new ScrollChangedEventHandler(DataGrid_ScrollChanged);
}
これで、パラメーター取得できる。
あとは、スクロールバーの変化量取得したり・・最下層に移動したり・・・