using System.Collections; using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Markup; namespace Waaagh.Converters { public class DefaultContentVisibilityConverter: MarkupExtension, IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { // 默认使用 Hidden 作为不显示 Visibility unvisibility = Visibility.Hidden; if (parameter is Visibility mode) { unvisibility = mode; } else if (parameter is bool isCollapsed && isCollapsed) { unvisibility = Visibility.Collapsed; } else if (parameter is string str && bool.TryParse(str, out isCollapsed) && isCollapsed) { unvisibility = Visibility.Collapsed; } // 任意类型为空, 显示默认内容 if (value == null) { return Visibility.Visible; } // 集合类型且空集合, 显示默认内容 if (value is ICollection collection && collection.Count == 0) { return Visibility.Visible; } return unvisibility; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } public override object ProvideValue(IServiceProvider serviceProvider) { return this; } } }