WPF。使用ColumnSpan自动调整列大小的方法不正确

WPF。使用ColumnSpan自动调整列大小的方法不正确,wpf,button,grid,Wpf,Button,Grid,我遇到了一个自动列的问题,没有按照我希望的方式调整大小。 我正在使用以下代码: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions>

我遇到了一个自动列的问题,没有按照我希望的方式调整大小。 我正在使用以下代码:

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

我希望这样做的方式是,第二个“自动”列仅获取按钮所需的宽度(以便它在网格的正下方对齐),而第一个“自动”列获取网格其余部分所需的剩余宽度

但是,第二列变长,宽度被划分为*列。请参见下面的屏幕截图

这是我对自动列工作原理的误解吗?如果是这样,最好的解决方法是什么。请注意,这是一个简化的代码,因为这是一个具有多个列的表单的一部分,所以我宁愿避免在其他网格或StackPanel中将对象包装到多个位置

另外,在按钮上设置宽度也是不可能的,因为我希望它正好是“搜索”内容所需的大小

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

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

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

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

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


我用我想要的编辑过的截图编辑了我的问题。这对我有用,谢谢!我仍然觉得我的代码也应该这样做,但这是一个很好的解决方案谢谢@Benjamin Van den BroeckI用我想要的经过编辑的屏幕截图编辑了我的问题。这对我有用,谢谢!仍然觉得我的代码也应该这样做,但这是一个很好的解决方案谢谢@Benjamin Van den Broeck