Да. Свяжите свойство Visibility 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}}"/>