private void GatherMenuItemColumns(ViewBase element) { // Does this element expose the column interface? if (element is IContextMenuItemColumn) { IContextMenuItemColumn column = (IContextMenuItemColumn)element; int columnIndex = column.ColumnIndex; Size columnPreferredSize = column.LastPreferredSize; // If the first entry for this column... if (!_columnToWidth.ContainsKey(columnIndex)) { _columnToWidth.Add(columnIndex, columnPreferredSize.Width); } else { // Grab the current preferred size int preferredWidth = _columnToWidth[columnIndex]; // Find the largest sizing preferredWidth = Math.Max(preferredWidth, columnPreferredSize.Width); // Put modified value back _columnToWidth[columnIndex] = preferredWidth; } } // Process child elements foreach (ViewBase child in element) { GatherMenuItemColumns(child); } }
private void ClearMenuItemColumns(ViewBase element) { // Does this element expose the column interface? if (element is IContextMenuItemColumn) { IContextMenuItemColumn column = (IContextMenuItemColumn)element; column.OverridePreferredWidth = 0; } // Process child elements foreach (ViewBase child in element) { ClearMenuItemColumns(child); } }