WPF。自动列没有使用ColumnSpan

时间:2016-09-16 07:52:43

标签: wpf button grid

我在使用自动列时遇到问题,而不是按照我想要的方式调整。 我使用以下代码:

<Grid>
    <Grid.ColumnDefinitions>
         <ColumnDefinition Width="auto"/>
         <ColumnDefinition Width="auto"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="10"/>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>
    <Grid Grid.ColumnSpan="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto"/>
            <ColumnDefinition Width="5"/>
            <ColumnDefinition Width="300"/>
        </Grid.ColumnDefinitions>
        <TextBlock Text="User: "/>
        <TextBox Grid.Row="2" Grid.Column="2" />
    </Grid>
    <Button Grid.Row="2" Grid.Column="1" Content="Search"/>
</Grid>

我想让它工作的方式是第二个自动列获取仅按钮所需的宽度(以便它在网格正下方对齐),并且第一个自动列获取其余部分所需的剩余宽度网格。

然而,第二列变长,宽度被分割为好像是*列。见下面的截图

link to image as I do not have the right rep to post

这是我对自动列如何工作的误解吗?如果是这样,那么最好的解决方法是什么。请注意,这是简化的代码,因为这是包含多个列的表单的一部分,所以我宁愿避免将我的对象包装到其他网格或堆栈面板中。

同样在按钮上设置宽度也是不可能的,因为我希望它完全符合“搜索”所需的尺寸。含量

编辑: 我试图实现的布局类似于this

1 个答案:

答案 0 :(得分:2)

首先,这只能通过一个网格来实现。不需要儿童网格。您可以使用此代码。为了更好地理解,您可以提供想要实现的图像。

  <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="auto"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="auto"/>
                <RowDefinition Height="10"/>
                <RowDefinition Height="auto"/>
            </Grid.RowDefinitions>
            <TextBlock  Text="User: "/>
            <TextBox  Grid.Column="1" />
            <Button Grid.Row="2" Grid.Column="1" Content="Search" HorizontalAlignment="Right" Width="Auto"/>
        </Grid>