Supongamos que tiene algunos botones (alineados horizontalmente) en una página y necesita ocultar/mostrar ciertos dependiendo de algún estado.
<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>
Aquí btnOne estará visible en la página cuando se ejecute. btnOne también estará alineado en el centro. Ahora bien, si queremos tres y cuatro que se mostrará y uno que se oculta cuando se hace clic en uno, podemos utilizar este código:
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);
}
Puede alternar entre la visibilidad de cualquier botón en tiempo de ejecución.
Espero que esto ayude a alguien!
posible duplicado de [Red Star-Tamaño en código detrás] (http://stackoverflow.com/questions/5459595/grid-star-size-in-code-behind) –