当我在 XAML 中时,假设我有 2 个列定义:
<Grid.ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition>
</Grid.ColumnDefinition>
我想在后面的代码中的第 0 位添加一个额外的列。但是当我添加列时,它会自动嵌入为第二个位置列。
当我在 XAML 中时,假设我有 2 个列定义:
<Grid.ColumnDefinition>
<ColumnDefinition>
<ColumnDefinition>
</Grid.ColumnDefinition>
我想在后面的代码中的第 0 位添加一个额外的列。但是当我添加列时,它会自动嵌入为第二个位置列。
您需要掌握您的网格,而不是插入列定义而不是“添加”。
Grid layoutRoot = new Grid();
layoutRoot.ColumnDefinitions.Insert(0, new ColumnDefinition() { Width = new GridLength(0, GridUnitType.Star) });
我认为您正在编写以下代码,我认为这是正确的。
Grid1.ColumnDefinitions.Insert(0, new ColumnDefinition());
您还需要做的一件事是像这样对网格中的孩子加一个,否则旧项目将放在第一列;所以效果就像你刚才看到的一样。
foreach (UIElement item in Grid1.Children)
{
var columnIndex = Grid.GetColumn(item);
Grid.SetColumn(item, columnIndex + 1);
}
这是实现这一目标的简单方法。
Maingrid.ColumnDefinitions.Insert(0, new ColumnDefinition());