我在使用自动列时遇到问题,而不是按照我想要的方式调整。 我使用以下代码:
<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
答案 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>