我有一个WPF网格,其中行和列0作为标签。我希望第一列的静态值为20,但我希望其余列延伸到可用空间,直到它们达到最大宽度,并且我希望网格即使在行达到最大值后也保持居中。如果我使用Grid HorizontalAlignment =“Center”,则每列宽度等于该行内容的宽度,这对于满空文本框的列来说看起来不太好。如果我使用Grid HorizontalAlignment =“Stretch”它完全符合我的要求,但是在列达到最大宽度后Grid不会居中,它会左对齐。有没有办法让网格居中并拉伸柱子?附件是我网格的xaml的一部分。
感谢。
<Expander Margin="10,10,10,10" Header="Expander">
<Grid Margin="10,10,10,10" HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20" />
<ColumnDefinition Width="*" MaxWidth="200"/>
<ColumnDefinition Width="*" MaxWidth="200" />
<ColumnDefinition Width="*" MaxWidth="200" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Label Content="Ax" HorizontalContentAlignment="Center" Grid.Column="1" Grid.Row="0"/>
<Label Content="0" HorizontalContentAlignment="Center" VerticalAlignment="Center" Grid.Column="0" Grid.Row="1" />
<TextBox Name="AxK00" Margin="1,1,1,1" HorizontalContentAlignment="Center" Grid.Column="1" Grid.Row="1" />
<TextBox Name="AyK00" Margin="1,1,1,1" HorizontalContentAlignment="Center" Grid.Column="2" Grid.Row="1" />
<TextBox Name="AzK00" Margin="1,1,1,1" HorizontalContentAlignment="Center" Grid.Column="3" Grid.Row="1" />
</Grid>
</Expander>
答案 0 :(得分:4)
当您的列已达到其MaxWidth时,Grid具有HorizontalAlignment = Stretch,这意味着Grid将扩展以填充空间,除非您为其指定宽度。尝试将Grid的MaxWidth设置为620(MaxWidth的总和)或类似的东西。您的网格将拉伸以填充您的最大尺寸,但仍然足够小,以便可以观察到HorizontalAlignment = Center。