Làm thế nào để kiểm tra xem một cuộn (dọc hoặc ngang) hiện đang được hiển thị trong WPF DataGrid? HorizontalScrollBarVisibility và VerticalScrollBarVisibility được sử dụng để thiết lập hành vi và chúng được đặt thành Tự động.Làm cách nào để kiểm tra xem cuộn hiện có được hiển thị trong WPF DataGrid không?
11
A
Trả lời
22
ScrollViewer scrollview = FindVisualChild<ScrollViewer>(dataGrid);
Visibility verticalVisibility = scrollview.ComputedVerticalScrollBarVisibility;
Visibility horizontalVisibility = scrollview.ComputedHorizontalScrollBarVisibility;
10
Dưới đây là một thực hiện 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;
}
0
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
tôi phải thực hiện FindVisualChild bản thân mình, làm tôi không? –
Vâng, có một số triển khai xung quanh: http://stackoverflow.com/questions/980120/finding-control-within-wpf-itemscontrol –