Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a scroll is currently visible in WPF DataGrid?

How to check if a scroll (vertical or horizontal) is currently shown in WPF DataGrid? HorizontalScrollBarVisibility and VerticalScrollBarVisibility are used to set the behaviour and they are set to Auto.

like image 842
brain_pusher Avatar asked Oct 21 '10 11:10

brain_pusher


2 Answers

ScrollViewer scrollview = FindVisualChild<ScrollViewer>(dataGrid);
Visibility verticalVisibility = scrollview.ComputedVerticalScrollBarVisibility;
Visibility horizontalVisibility = scrollview.ComputedHorizontalScrollBarVisibility;
like image 185
Andrew Hanlon Avatar answered Oct 05 '22 06:10

Andrew Hanlon


Here's an implementation of 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;
}
like image 26
Mark Avatar answered Oct 05 '22 05:10

Mark