WPF Grid Center и Stretch Textbox

Имам WPF мрежа с ред и колона 0 като етикети. Искам първата колона да бъде статична стойност 20, но искам останалите колони да се простират до наличното си пространство, докато достигнат максималната ширина и искам решетката да остане центрирана дори след като редовете достигнат максимума си. Ако използвам Grid HorizontalAlignment="Center", всяка ширина на колона е равна на ширината на съдържанието на този ред, което не изглежда много добре за колона, пълна с празни текстови полета. Ако използвам Grid HorizontalAlignment="Stretch", той прави точно това, което искам, но мрежата не е центрирана, след като колоните са достигнали максималната си ширина, тя е подравнена вляво. Има ли някакъв начин да центрирате мрежата и да разтегнете колоните? Приложен е раздел от 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>

person Greg Hill    schedule 05.04.2013    source източник


Отговори (1)


Докато вашите колони са достигнали своята MaxWidth, мрежата има HorizontalAlignment=Stretch, което означава, че мрежата ще се разшири, за да запълни пространството, освен ако не й дадете ширина. Опитайте да зададете MaxWidth на вашата Grid на 620 (сумата от вашите MaxWidths) или нещо подобно. Вашата решетка ще се разтегне, за да запълни максималния ви размер, но все пак ще бъде достатъчно малка, за да може да се наблюдава HorizontalAlignment =Center.

person Dan Busha    schedule 05.04.2013