private static DataGridColumnHeader[] GetAllVisibleColumnHeaders(DataGrid dataGrid)
        {
            if (dataGrid == null)
            {
                return(null);
            }

            dataGrid.UpdateLayout();
            DataGridColumnHeader[] columnHeaders = CustomVisualTreeHelper <DataGridColumnHeader> .FindChildrenRecursive(dataGrid);

            return((from DataGridColumnHeader columnHeader in columnHeaders
                    where columnHeader != null && columnHeader.Column != null
                    select columnHeader).ToArray());
        }
Exemple #2
0
            public static TReturn[] FindChildrenRecursive(DependencyObject parent)
            {
                int childCount            = VisualTreeHelper.GetChildrenCount(parent);
                DependencyObject child    = null;
                List <TReturn>   children = new List <TReturn>();

                for (int childIndex = 0; childIndex < childCount; childIndex++)
                {
                    child = VisualTreeHelper.GetChild(parent, childIndex);
                    if (child is TReturn)
                    {
                        children.Add((TReturn)(object)child);
                    }

                    children.AddRange(CustomVisualTreeHelper <TReturn> .FindChildrenRecursive(child));
                }
                return(children.ToArray());
            }
Exemple #3
0
        private static void SetupColumnHeader(DataGridColumnHeader columnHeader)
        {
            if (columnHeader == null)
            {
                return;
            }

            DataGrid dataGrid = CustomVisualTreeHelper <DataGrid> .FindAncestor(columnHeader);

            if (dataGrid == null)
            {
                return;
            }

            DataGridColumnHeader[] columnHeaders = GetColumnHeaders(dataGrid);
            if (columnHeaders == null)
            {
                return;
            }

            SetupColumnHeader(dataGrid, columnHeaders, columnHeader);
        }
Exemple #4
0
            public static TReturn FindChildRecursive(DependencyObject parent)
            {
                int childCount         = VisualTreeHelper.GetChildrenCount(parent);
                DependencyObject child = null;

                for (int childIndex = 0; childIndex < childCount; childIndex++)
                {
                    child = VisualTreeHelper.GetChild(parent, childIndex);
                    if (child is TReturn)
                    {
                        return((TReturn)(object)child);
                    }
                    else
                    {
                        child = CustomVisualTreeHelper <TReturn> .FindChildRecursive(child);

                        if (child is TReturn)
                        {
                            return((TReturn)(object)child);
                        }
                    }
                }
                return(default(TReturn));
            }