【发布时间】:2011-04-28 13:44:11
【问题描述】:
如何检查当前是否在 WPF DataGrid 中显示滚动(垂直或水平)? HorizontalScrollBarVisibility 和 VerticalScrollBarVisibility 用于设置行为,它们设置为 Auto。
【问题讨论】:
标签: c# wpf datagrid scroll visibility
如何检查当前是否在 WPF DataGrid 中显示滚动(垂直或水平)? HorizontalScrollBarVisibility 和 VerticalScrollBarVisibility 用于设置行为,它们设置为 Auto。
【问题讨论】:
标签: c# wpf datagrid scroll visibility
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
【讨论】:
这是 FindVisualChild 的一个实现:
private childItem FindVisualChild<childItem>(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<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
【讨论】:
ScrollViewer scrollview = FindVisualChild<ScrollViewer>(dataGrid);
Visibility verticalVisibility = scrollview.ComputedVerticalScrollBarVisibility;
Visibility horizontalVisibility = scrollview.ComputedHorizontalScrollBarVisibility;
【讨论】: