using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; namespace Tango.MachineStudio.Common.Controls { public class TableGrid : Grid { public TableGrid() { ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Auto) }); ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }); this.Loaded += TableGrid_Loaded; } private void TableGrid_Loaded(object sender, RoutedEventArgs e) { InvalidateGrid(); } protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved) { base.OnVisualChildrenChanged(visualAdded, visualRemoved); } protected override Size ArrangeOverride(Size arrangeSize) { return base.ArrangeOverride(arrangeSize); } private void InvalidateGrid() { RowDefinitions.Clear(); RowDefinitions.Add(new RowDefinition() { Height = new GridLength(50, GridUnitType.Pixel) }); int currentRow = 0; for (int i = 0; i < Children.Count; i++) { SetRow(Children[i], currentRow); if (i % 2 != 0) { SetColumn(Children[i], 1); (Children[i] as FrameworkElement).Margin = new Thickness(20, 0, 0, 0); currentRow++; RowDefinitions.Add(new RowDefinition() { Height = new GridLength(50, GridUnitType.Pixel) }); } (Children[i] as FrameworkElement).VerticalAlignment = VerticalAlignment.Bottom; } } } }