更改StackPanel中的可见性

abe*_*nky 12 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>
Run Code Online (Sandbox Code Playgroud)

请注意,TextBox以"隐藏"开头.

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

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

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

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

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

Dea*_*uga 26

Visibilty.Collapsed改用.它没有保留像空白一样的空白Visibilty.Hidden.


mad*_*dd0 10

你应该尝试使用Visibility.Collapsed而不是Visibility.Hidden.