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