1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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;
- }
- }
- }
|