5 using System.Windows.Controls;
7 namespace SiliconStudio.Presentation.Controls
19 private bool gridParametersInvalidated;
26 ColumnDefinitions.Add(
new ColumnDefinition { Width =
new GridLength(0.0, GridUnitType.Auto) });
27 ColumnDefinitions.Add(
new ColumnDefinition { Width =
new GridLength(1.0, GridUnitType.Star) });
33 private void InvalidateGridParameters()
35 RowDefinitionCollection rowCollection = RowDefinitions;
36 UIElementCollection children = Children;
40 int neededRowCount = Math.DivRem(children.Count, 2, out remainder) + remainder;
42 int currentRowCount = rowCollection.Count;
43 int deltaRowCount = neededRowCount - currentRowCount;
46 if (deltaRowCount > 0)
48 for (
int i = 0; i < deltaRowCount; i++)
49 rowCollection.Add(
new RowDefinition { Height = new GridLength(0.0, GridUnitType.Auto) });
51 else if (deltaRowCount < 0)
53 rowCollection.RemoveRange(currentRowCount + deltaRowCount, -deltaRowCount);
59 foreach (UIElement element
in children)
61 element.SetValue(ColumnProperty, column);
62 element.SetValue(RowProperty, row);
76 if (gridParametersInvalidated)
78 gridParametersInvalidated =
false;
79 InvalidateGridParameters();
82 return base.MeasureOverride(constraint);
88 gridParametersInvalidated =
true;
89 base.OnVisualChildrenChanged(visualAdded, visualRemoved);
override Size MeasureOverride(Size constraint)
override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved)
KeyValueGrid()
Initializes a new instance of the KeyValueGrid class.
This control represents a Grid with two columns, the first one representing keys and the second one r...