Autosizing a grid column to take up remaining space in parent

百般思念 提交于 2019-11-28 07:43:58

问题


In WPF, I am having a heck of a time trying to get a grid to size properly.

I have the following layout for my grid:

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

The problem is that Width="Auto" seems to be sizing that column to the width of the content, and not filling out the extra space in the parent container. This leaves the rest of the columns all unaligned, and ugly blank space at the end of each row.

I'm probably missing something simple, but I can't seem to find a method to fit the column appropriately.

Or is there a better control for the job?


回答1:


* means fill or share. If you had two with * then they would share the width evenly.

<ColumnDefinition Width="*"/>



回答2:


Seems I found a solution after a bit more tinkering around.

The problem was: <ColumnDefinition Width="Auto"/>

This was causing the column to fit to the content. I changed it to: <ColumnDefinition />

This causes the column to fit to the empty space left in the parent container, regardless of content size.



来源:https://stackoverflow.com/questions/12432189/autosizing-a-grid-column-to-take-up-remaining-space-in-parent

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!