using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; namespace Tango.SharedUI.Controls { public class SpannedUniformGrid : Grid { public SpannedUniformGrid() { this.Loaded += (_, __) => InvalidateGrid(); } private void InvalidateGrid() { ColumnDefinitions.Clear(); int count = 0; foreach (var item in Children.OfType()) { count++; int span = Grid.GetColumnSpan(item); if (span > 1) { count += span; } Grid.SetColumn(item, count - 1); } for (int i = 0; i < count; i++) { ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); } } } }