Załóżmy, że masz kilka przycisków (wyrównanych poziomo) na stronie i musisz je ukryć/pokazać w zależności od pewnego statusu.
<Grid HorizontalAlignment="Center" Grid.Column="1" Width="340" VerticalAlignment="Center" Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" x:Name="colOne"></ColumnDefinition>
<ColumnDefinition Width="0" x:Name="colTwo"></ColumnDefinition>
<ColumnDefinition Width="0" x:Name="colThree"></ColumnDefinition>
<ColumnDefinition Width="0" x:Name="colFour"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button x:Name="btnOne" Grid.Column="0" Height="50" Width="50" Content="One" Cursor="Hand" />
<Button x:Name="btnTwo" Grid.Column="1" Height="50" Width="50" Content="Two" Cursor="Hand" />
<Button x:Name="btnThree" Grid.Column="2" Height="50" Width="50" Content="Thre" Cursor="Hand" />
<Button x:Name="btnFour" Grid.Column="3" Height="50" Width="50" Content="Four" Cursor="Hand" />
</Grid>
Tutaj btnOne będzie widoczny na stronie po uruchomieniu. btnOne będzie również wyrównany w środku. Teraz, jeśli chcemy, trzy i cztery na wyświetlenie i jeden być ukryte po kliknięciu na jednym, możemy użyć tego kodu:
private void btnOne_Click(object sender, RoutedEventArgs e)
{
SetGridColWidth(colOne, false);
SetGridColWidth(colThree, true);
SetGridColWidth(colFour, true);
}
private void SetGridColWidth(ColumnDefinition column, bool show)
{
if (show)
column.Width = new GridLength(2, GridUnitType.Star);
else
column.Width = new GridLength(0);
}
Można przełączać między widoczności jakiegokolwiek przycisku przy starcie.
Mam nadzieję, że to pomoże komuś!
możliwe duplikat [Siatka Star-Size w kodzie tyłu] (http://stackoverflow.com/questions/5459595/grid-star-size-in-code-behind) –