C# 在WPF中折叠网格
我正在使用下面的代码创建一个带有网格的3列布局C# 在WPF中折叠网格,c#,wpf,grid,C#,Wpf,Grid,我正在使用下面的代码创建一个带有网格的3列布局 <Window x:Class="WpfApplication21.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350"
<Window x:Class="WpfApplication21.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Column="0" Background="Aqua"></Grid>
<Grid Column="1" Background="Red"></Grid>
<Grid Column="2" Background="Yellow"></Grid>
</Grid>
</Window>
因为您只隐藏网格的列定义,但实际上并没有隐藏网格 可以这样做,要隐藏第三列,需要将列的宽度设置为“0”
隐藏柱
私有void hideColumn(对象发送方,RoutedEventArgs e)
{
this.TestColumn.Width=新的GridLength(0,GridUnitType.Pixel);
}
您告诉网格
要将其平均分成3部分,您需要将最后一列设置为自动
宽度以实现您想要的(使最后一列与其内容的宽度相匹配):
Thank Sajeetharan的可能重复,您的答案也有效,但Bolu建议的答案也不使用代码。
<Grid Column="2" Background="Yellow" Visibility="Collapsed"></Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition x:Name="TestColumn" Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid Column="0" Background="Aqua"></Grid>
<Grid Column="1" Background="Red"></Grid>
<Button Grid.Column="2" Click="hideColumn">hideColumn</Button>
</Grid>
private void hideColumn(object sender, RoutedEventArgs e)
{
this.TestColumn.Width = new GridLength(0, GridUnitType.Pixel);
}
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>