将列嵌入另一列内部

时间:2017-01-03 15:52:42

标签: c# wpf

我想在一个更大的容器列中嵌套一组列。我本打算使用网格,但我愿意接受建议。我希望结果如下所示:第1行第1列和第2行第1列包含子列1a,1b,1c和1d。

enter image description here

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Name="row0"  Height="35"></RowDefinition>
        <RowDefinition Name="row1"  Height="20"></RowDefinition>
        <RowDefinition Name="row2"  Height="35"></RowDefinition>
        <RowDefinition Name="row3"  Height="35"></RowDefinition>
        <RowDefinition Name="row4"  Height="35"></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Name="col0" Width="75"></ColumnDefinition>
        <ColumnDefinition Name="col1" Width="400"></ColumnDefinition>
        <ColumnDefinition Name="col2" Width="75"></ColumnDefinition>
    </Grid.ColumnDefinitions>

3 个答案:

答案 0 :(得分:2)

只需添加另一个网格并将其添加到父容器上的某个网格单元格即可。 (如果嵌套是您想要的方式)

<Grid Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="2">
  <Grid.ColumnDefinitions>
       <ColumnDefinition Width="*"/>
       <ColumnDefinition Width="*"/>
       <ColumnDefinition Width="*"/>
  </Grid.ColumnDefinitions>
</Grid>

答案 1 :(得分:2)

嵌套网格确实有效,但如果您有动态内容,则ColumnSpan会保持不同列的排列。

在下面的示例中,我为中间部分创建了三个新列。 然后对于像第0行col 1这样的列,我只是告诉它跨越4列

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Name="row0" Height="35" />
        <RowDefinition Name="row1" Height="20" />
        <RowDefinition Name="row2" Height="35" />
        <RowDefinition Name="row3" Height="35" />
        <RowDefinition Name="row4" Height="35" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Name="col0" Width="75" />
        <ColumnDefinition Name="col1" Width="75" />
        <ColumnDefinition Name="col2" Width="125" />
        <ColumnDefinition Name="col3" Width="125" />
        <ColumnDefinition Name="col4" Width="75" />
        <ColumnDefinition Name="col5" Width="75" />
    </Grid.ColumnDefinitions>

    <TextBox Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="4" />
    <TextBox Grid.Row="1" Grid.Column="1" />
    <TextBox Grid.Row="1" Grid.Column="2" />
    <TextBox Grid.Row="2" Grid.Column="0" />
    <TextBox Grid.Row="2" Grid.Column="4" />
    <TextBox Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="4" />
</Grid>

enter image description here enter image description here

答案 2 :(得分:1)

我建议只使用一个网格并在row0col1,row3col1和row4col1的内容上定义Grid.ColumnSpan="4",而不是嵌套网格。