Изменение видимости в StackPanel - PullRequest
12 голосов
/ 07 марта 2011

У меня есть 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;
}

Цель состоит в том, чтобы скрыть метку и заставить текстовое поле появиться на своем месте.

Однако, поскольку оноStackPanel, TextBox занимает вертикальное пространство, даже когда он не виден.Затем, когда TextBox открывается, у него есть пустое пространство над ним, где ранее была видна Метка.

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

Ответы [ 2 ]

26 голосов
/ 07 марта 2011

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

10 голосов
/ 07 марта 2011

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

...