更改StackPanel中的可见性

时间:2011-03-07 20:33:34

标签: wpf visibility stackpanel

我有一个WPF StackPanel,如下所示: (删除了一些无关紧要的属性)

<StackPanel HorizontalAlignment="Center" Name="PICStack">
        <Label Name="PICName"  MouseDoubleClick="PICName_MouseDoubleClick" />
        <TextBox Name="PICData" Width="120" Visibility="Hidden" />
        <Label Name="PICWeight" />
        <Label Name="PICARM"    />
</StackPanel>

请注意,TextBox以“隐藏”开头。

当我双击顶部标签时,我交换了可见性:

private void PICName_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    this.PICData.Visibility = Visibility.Visible;
    this.PICName.Visibility = Visibility.Hidden;
}

目的是隐藏标签,并使TextBox显示在其位置。

但是,因为它是一个StackPanel,所以TextBox占用了垂直空间,即使它不可见。然后,当文本框显示时,它上面有空白区域,标签以前是可见的。

有没有一种好方法可以使这两个项目基本上直接相互叠加?那么双击Label会突然变成TextBox吗?

2 个答案:

答案 0 :(得分:23)

请改用Visibilty.Collapsed。它不保留像Visibilty.Hidden那样的空格。

答案 1 :(得分:10)

您应该尝试使用Visibility.Collapsed代替Visibility.Hidden