Files
2026-02-24 11:34:18 +08:00

81 lines
2.6 KiB
C#

using System.Globalization;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;
namespace ShrlAlgoToolkit.RevitAddins.Common.Converters
{
[ValueConversion(typeof(bool), typeof(Visibility))]
public class BoolVisibilityConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (value is bool b && b) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value is Visibility v && v == Visibility.Visible;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
[ValueConversion(typeof(bool), typeof(Visibility))]
public class InverseBoolVisibilityConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value! == false ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return (Visibility)value! != Visibility.Visible;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
[ValueConversion(typeof(bool), typeof(bool))]
public class BooleanConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value!;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value!;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
[ValueConversion(typeof(bool), typeof(bool))]
public class InverseBooleanConverter : MarkupExtension, IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value!;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value!;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}