我有一个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吗?
答案 0 :(得分:23)
请改用Visibilty.Collapsed
。它不保留像Visibilty.Hidden
那样的空格。
答案 1 :(得分:10)
您应该尝试使用Visibility.Collapsed
代替Visibility.Hidden
。