| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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();
- }
- }
- }
|