2017-01-03 23 views
1

我想在更大的容器列中嵌套一组列。我打算为此使用网格,但我愿意接受建议。我想结果看起来如下第1行col 1和第2行col 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

跨越你有没有考虑使用,而不是嵌套网格Grid.ColumnSpan? – wkl

+0

接受@wkl的建议,看看使用ColumnSpan不如嵌套网格效果更好。除此之外,我只想补充一点,只要列和行的数量不是动态的,Grid绝对是这里的一种方式。 –

回答

2

嵌套网格可以工作,但如果您有动态内容,ColumnSpan会使您的不同列保持一致。

在我的例子中,我为中间部分创建了三个新列。 然后像行0山坳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

只需添加另一种网格,将其添加到父容器在某个网格单元。 (如果嵌套的是你想要去的方式)

<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

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