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()); }
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()); }
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); }
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)); }