创建多行和多列
本文关键字:创建 | 更新日期: 2023-09-27 18:11:14
我需要创建很多行和列,以便正确管理我的自定义控件。所以我的问题是,如果有可能实现与下面所示的代码相同的结果?用一种更干净的方式来说,这感觉太不切实际了……
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
您可以查看AutoGrid的语法如下:
<AutoGrid RowCount="2" RowHeight="35" Columns="100,auto">
<Label />
<TextBox />
<Label />
<TextBox />
</AutoGrid>
您可以在后面的代码中做同样的事情,但通常您应该像在XAML中那样做。
// Add 10 Rows
for (int i = 0; i < 10; i++)
{
var height = GridLength.Auto;
if (i == 0)
height = new GridLength(1, GridUnitType.Star);
layoutGrid.RowDefinitions.Add(new RowDefinition()
{
Height = height
});
}
// Add 7 Columns
for (int i = 0; i < 7; i++)
{
var width = GridLength.Auto;
if (i == 0)
width = new GridLength(1, GridUnitType.Star);
layoutGrid.ColumnDefinitions.Add(new ColumnDefinition()
{
Width = width
});
}
Wouter对AutoGrid的回答的另一个替代方案是ApexGrid。代码看起来与AutoGrid非常相似。
<apex:ApexGrid Rows="Auto,*" Columns="100,Auto">
<Label Grid.Row="0" Grid.Column="0" />
<TextBox Grid.Row="0" Grid.Column="1" />
<Label Grid.Row="1" Grid.Column="0" />
<TextBox Grid.Row="1" Grid.Column="1" />
</apex:ApexGrid>