1

我有一个 WPF 网格,其中行和列 0 作为标签。我希望第一列是 20 的静态值,但我希望其余列伸展到它们的可用空间,直到它们达到最大宽度,并且我希望网格即使在行达到最大宽度后仍保持居中。如果我使用 Grid Horizo​​ntalAlignment="Center" 每列宽度等于该行内容的宽度,这对于一个充满空文本框的列来说看起来不是很好。如果我使用 Grid Horizo​​ntalAlignment="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>
4

1 回答 1

4

当您的列已达到它们的 MaxWidth 时,Grid 有一个 Horizo​​ntalAlignment=Stretch,这意味着除非您给它一个 Width,否则 Grid 将扩展以填充空间。尝试将 Grid 的 MaxWidth 设置为 620(MaxWidths 的总和)或类似的值。您的 Grid 将拉伸以填充您的最大尺寸,但仍然足够小,以使 Horizo​​ntalAlignment =Center 可以观察到。

于 2013-04-05T22:34:35.490 回答