2012-09-14 27 views
5

在WPF中,我有一段时间试图让网格正确调整大小。自动调整网格列以占用父代中的剩余空间

我有以下布局为我网:

<ItemsControl HorizontalContentAlignment="Stretch"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition Width="80"/> 
         <ColumnDefinition Width="80"/> 
         <ColumnDefinition Width="100"/> 
        </Grid.ColumnDefinitions> 
        <Label Grid.Column="0" /> 
        <Label Grid.Column="1"/> 
        <TextBox Grid.Column="2"/> 
        <Button Grid.Column="3"/> 
       </Grid> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
</ItemsControl> 

的问题是,宽度=“自动”似乎上浆该列内容的宽度,而不是填写额外的空间父容器。这使剩下的列全部不对齐,并在每行末尾留下难看的空白空间。

我可能错过了一些简单的东西,但我似乎无法找到合适的方法来适应列。

或者是否有更好的控制工作?

回答

9

*表示填写或分享。如果你有两个*,那么他们会平均分配宽度。

<ColumnDefinition Width="*"/> 
0

似乎我找到了一个解决方案后多一点修补。

的问题是:<ColumnDefinition Width="Auto"/>

这是导致该列,以适合的内容。我将它更改为:<ColumnDefinition />

这会使列适合留在父容器中的空白空间,无论内容大小如何。

+0

转换为'Width =“*”'。请参阅@ Blam的答案了解更多细节 –

+0

Mhh似乎不适用于我的情况,Button仍然只有Text的大小。 – AgentKnopf

+0

如果内容宽度大于列,则不起作用。 – walteronassis

相关问题