【解決方法】データグリッドのスクロールバー ボタン

プログラミングQA


多くの行がある場合、垂直スクロールバーがアクティブになります。 マウスの左ボタンでスクロールバー ボタンを上から下に移動していることを知るにはどうすればよいですか? 明けましておめでとうございます。

私が試したこと:

私はWPFが初めてで、やり方がわかりません。

解決策 1

Gerry の解決策 リンクに加えて、表示される行を取得する方法について質問することを期待しています。 ここからの解決策は次のとおりです Wpf DataGrid:可視セルのセットを検出する方法は?
[^]

イベントを接続します。

XML
<DataGrid ScrollViewer.ScrollChanged="DataGrid_ScrollChanged">

イベントハンドラーは次のようになります。

C#
private static T GetChildOfType<T>(DependencyObject depObj)
	where T : DependencyObject
{
	if (depObj == null) return null;

	for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
	{
		var child = VisualTreeHelper.GetChild(depObj, i);

		var result = (child as T) ?? GetChildOfType<T>(child);
		if (result != null) return result;
	}
	return null;
}

private void DataGrid_ScrollChanged(object sender, ScrollChangedEventArgs e)
{
	DataGrid datagrid = sender as DataGrid;
	var scroll = GetChildOfType<ScrollViewer>((DependencyObject)sender);

	int firstRow = (int)scroll.VerticalOffset;
	int lastRow = (int)scroll.VerticalOffset + (int)scroll.ViewportHeight + 1;

	for (int i = firstRow; i < lastRow; i++)
	{
		// do work here
	}
}

コメント

タイトルとURLをコピーしました