Files
Shrlalgo.RvKits/ShrlAlgoToolkit.RevitAddins/Converters/MarkupConverters.cs
2026-02-20 15:31:44 +08:00

82 lines
2.6 KiB
C#

using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;
namespace ShrlAlgo.Toolkit.Wpf.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;
}
}
}