2012-09-14 32 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

相關問題