创建多行和多列

本文关键字:创建 | 更新日期: 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>