WPF网格中心和拉伸文本框

时间:2013-04-05 20:44:22

标签: wpf grid center stretch

我有一个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>

1 个答案:

答案 0 :(得分:4)

当您的列已达到其MaxWidth时,Grid具有Horizo​​ntalAlignment = Stretch,这意味着Grid将扩展以填充空间,除非您为其指定宽度。尝试将Grid的MaxWidth设置为620(MaxWidth的总和)或类似的东西。您的网格将拉伸以填充您的最大尺寸,但仍然足够小,以便可以观察到Horizo​​ntalAlignment = Center。