Изменение видимости в 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 занимает место по вертикали, даже если оно невидимо. Затем, когда TextBox открывается, над ним появляется пустое пространство, где ранее была видна метка.

Есть ли хороший способ сделать так, чтобы два элемента находились непосредственно друг над другом? так что двойной щелчок по метке внезапно превращается в TextBox?


person abelenky    schedule 07.03.2011    source источник


Ответы (2)


Вместо этого используйте Visibilty.Collapsed. Он не резервирует пробелы, как это делает Visibilty.Hidden.

person Dean Kuga    schedule 07.03.2011

Вы должны попробовать использовать Visibility.Collapsed вместо Visibility.Hidden.

person madd0    schedule 07.03.2011