Рассматривали ли вы установить видимость текстовых полей на Hidden
? Это «скроет» пространство, назначенное для текстовых полей. Если предположить, что в StackPanel их нет, то они не будут видны.
Конечно, это решение может сделать некоторые наивные предположения о вашей реализации.
Если вам нужен более сложный сценарий, я бы попробовал следующее:
Примечание: это psuedocode - может не скомпилироваться.
1) Использовать MultiBinding
<StackPanel>
<StackPanel.Visibility Converter={StaticResource visibilityConverter}>
<MultiBinding.Bindings>
<Binding ElementName="textBox1" Path="Visibility" />
<Binding ElementName="textBox2" Path="Visibility" />
<Binding ElementName="textBox3" Path="Visibility" />
</MultiBinding.Bindings>
</StackPanel.Visibility>
</StackPanel>
2) Объявить конвертер
<Window.Resources>
<local:VisibilityConverter x:Key="visibilityConverter" />
</Window.Resources>
3) Определить конвертер
public class VisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
Visibility text1Vis = (Visibility)values[0];
Visibility text2Vis = (Visibility)values[1];
Visibility text3Vis = (Visibility)values[2];
if (text1Vis == text2Vis == text3Vis == Visibility.Collapsed)
return Visibility.Collapsed;
return Visibility.Visible;
}
}