Да. Привяжите свойство видимости ListBox к объекту, содержащему массив. Затем примените настраиваемый преобразователь значений, который будет смотреть на массив и посмотреть, пуст ли он. Если он пуст, верните Visibility.Collapsed. В противном случае верните Visibility.Visible. Затем убедитесь, что ваш RowDefinition имеет высоту Auto, и он автоматически сжимается до нуля, когда ListBox рушится.
Ваше значение конвертер будет выглядеть примерно так:
public class EmptyVisiblityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
YourObject yourObject = value as YourObject;
return yourObject.YourArray.Count > 0 ? Visibility.Visible : Visibility.Hidden;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
И ваш XAML должен выглядеть следующим образом:
<Window.Resources>
<local:EmptyVisiblityConverter x:Key="emptyVisibilityConverter"/>
</Window.Resources>
...
<ListBox Visibility="{Binding Path=YourObject, Converter={StaticResource emptyVisibilityConverter}}"/>
Это решение работает на меня! – djcouchycouch