Wpf 折叠任何柱后调整轴网柱的大小

Wpf 折叠任何柱后调整轴网柱的大小,wpf,Wpf,我在网格中有三个按钮 <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Button Grid.Column="0" Content

我在网格中有三个按钮

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
  <Button Grid.Column="0" Content="A" />
  <Button Grid.Column="1" Content="B" />
  <Button Grid.Column="2" Content="C" />
</Grid>

我希望,具有Visibility=“Collapsed”的按钮不会占用空间

比如说

(一)

//33%的空间
//33%的空间
//33%的空间
(二)

//50%的空间
//50%的空间
//0%的空间
(三)

//100%的空间
//0%的空间
//0%的空间
我该怎么做?

试试这个:

<Grid Name="grid">
    <Grid.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Collapsed">
                    <Setter Property="Tag" Value="0"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Grid.ColumnDefinitions>
        <ColumnDefinition  Width="{Binding ElementName=A,Path=Tag}" />
        <ColumnDefinition Width="{Binding ElementName=B,Path=Tag}"  />
        <ColumnDefinition  Width="{Binding ElementName=C,Path=Tag}"  />
    </Grid.ColumnDefinitions>
    <Button Grid.Column="0" Content="A" Name="A" Click="Button_Click" />
    <Button Grid.Column="1" Content="B"  Name="B"  />
    <Button Grid.Column="2" Content="C" Name="C" Visibility="Collapsed" />
</Grid>


更改列的宽度,而不是更改按钮的可见性
。即使是未使用的列也会占用空间,除非使用is
Auto
。在本例中,看起来使用StackPanel比使用网格更好。然后,当您折叠图元时,布局将按预期进行更改。
<Button Grid.Column="0" Content="A" /> //50% of space
<Button Grid.Column="1" Content="B" /> //50% of space
<Button Grid.Column="2" Content="C" Visibility="Collapsed" /> //0% of space
<Button Grid.Column="0" Content="A" /> //100% of space
<Button Grid.Column="1" Content="B" Visibility="Collapsed" /> //0% of space
<Button Grid.Column="2" Content="C" Visibility="Collapsed" /> //0% of space
<Grid Name="grid">
    <Grid.Resources>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Collapsed">
                    <Setter Property="Tag" Value="0"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Grid.ColumnDefinitions>
        <ColumnDefinition  Width="{Binding ElementName=A,Path=Tag}" />
        <ColumnDefinition Width="{Binding ElementName=B,Path=Tag}"  />
        <ColumnDefinition  Width="{Binding ElementName=C,Path=Tag}"  />
    </Grid.ColumnDefinitions>
    <Button Grid.Column="0" Content="A" Name="A" Click="Button_Click" />
    <Button Grid.Column="1" Content="B"  Name="B"  />
    <Button Grid.Column="2" Content="C" Name="C" Visibility="Collapsed" />
</Grid>