如何检查WPF DataGrid中当前是否可以看到滚动?

如何检查WPF DataGrid中当前是否显示滚动(垂直或水平)? Horizo​​ntalScrollBarVisibility和VerticalScrollBarVisibility用于设置行为,它们设置为Auto。

ScrollViewer scrollview = FindVisualChild(dataGrid); Visibility verticalVisibility = scrollview.ComputedVerticalScrollBarVisibility; Visibility horizontalVisibility = scrollview.ComputedHorizontalScrollBarVisibility; 

这是FindVisualChild的一个实现:

 private childItem FindVisualChild(DependencyObject obj) where childItem : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { DependencyObject child = VisualTreeHelper.GetChild(obj, i); if (child != null && child is childItem) return (childItem)child; else { childItem childOfChild = FindVisualChild(child); if (childOfChild != null) return childOfChild; } } return null; } 
 Private Function FindVisualChild(Of childItem As DependencyObject)(ByVal obj As DependencyObject) As childItem For i As Integer = 0 To VisualTreeHelper.GetChildrenCount(obj) - 1 Dim child As DependencyObject = VisualTreeHelper.GetChild(obj, i) If child IsNot Nothing AndAlso TypeOf child Is childItem Then Return CType(child, childItem) Else Dim childOfChild As childItem = FindVisualChild(Of childItem)(child) If childOfChild IsNot Nothing Then Return childOfChild End If End If Next i Return Nothing End Function