using System; using System.Collections; using System.Globalization; using System.Windows; using System.Windows.Data; namespace SWRIS.Converters { public class CollectionToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { // 处理 null 值 if (value == null) return Visibility.Collapsed; // 处理集合类型 if (value is ICollection collection) return collection.Count > 0 ? Visibility.Visible : Visibility.Collapsed; // 处理 IEnumerable(不推荐,因为可能触发多次枚举) if (value is IEnumerable enumerable) { var enumerator = enumerable.GetEnumerator(); try { return enumerator.MoveNext() ? Visibility.Visible : Visibility.Collapsed; } finally { if (enumerator is IDisposable disposable) disposable.Dispose(); } } // 其他类型默认显示 return Visibility.Visible; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }