2012-09-14 11 views
5

Trong WPF, tôi đang có một thời gian cố gắng để có được một mạng lưới có kích thước phù hợp.Tự động hóa cột lưới để chiếm không gian còn lại trong bố mẹ

Tôi có cách bố trí sau cho lưới của tôi:

<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> 

Vấn đề là Width = "Tự động" dường như được kích thước cột với độ rộng của nội dung, và không điền vào không gian thêm trong vùng chứa chính. Điều này để lại phần còn lại của tất cả các cột, không gian trống và không gian xấu xí ở cuối mỗi hàng.

Tôi có thể thiếu một cái gì đó đơn giản, nhưng tôi dường như không thể tìm thấy một phương pháp để phù hợp với cột một cách thích hợp.

Hoặc có kiểm soát tốt hơn cho công việc không?

Trả lời

9

* nghĩa là điền hoặc chia sẻ. Nếu bạn có hai với * thì chúng sẽ chia sẻ chiều rộng đồng đều.

<ColumnDefinition Width="*"/> 
0

Dường như tôi đã tìm thấy một giải pháp sau khi một chút tinkering xung quanh.

Vấn đề là: <ColumnDefinition Width="Auto"/>

này đã gây ra cột để phù hợp với nội dung. Tôi đã thay đổi nó thành: <ColumnDefinition />

Điều này làm cho cột phù hợp với không gian trống còn lại trong vùng chứa chính, bất kể kích thước nội dung.

+0

Điều đó chuyển thành 'Width =" * "'. Xem câu trả lời của @ Blam để biết thêm chi tiết hơn –

+0

Mhh dường như không hoạt động trong trường hợp của tôi, Nút vẫn chỉ lớn bằng chữ của nó. – AgentKnopf

+0

Không hoạt động nếu chiều rộng nội dung lớn hơn cột. – walteronassis