mirror of
https://github.com/VitalickS/BrightSharp.Toolkit.git
synced 2026-03-21 10:21:16 +00:00
61 lines
1.9 KiB
C#
61 lines
1.9 KiB
C#
|
|
using System;
|
||
|
|
using System.Collections;
|
||
|
|
using System.Globalization;
|
||
|
|
using System.Windows.Data;
|
||
|
|
|
||
|
|
namespace BrightSharp.Converters
|
||
|
|
{
|
||
|
|
public class IntToValueConverter : IValueConverter
|
||
|
|
{
|
||
|
|
public ulong? TrueValueInt { get; set; } = null;
|
||
|
|
public ulong? FalseValueInt { get; set; } = 0;
|
||
|
|
|
||
|
|
|
||
|
|
public object TrueValue { get; set; } = true;
|
||
|
|
public object FalseValue { get; set; } = false;
|
||
|
|
|
||
|
|
|
||
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||
|
|
{
|
||
|
|
if (value == null)
|
||
|
|
{
|
||
|
|
value = false;
|
||
|
|
}
|
||
|
|
if (value is string valueStr)
|
||
|
|
{
|
||
|
|
value = valueStr.Length > 0;
|
||
|
|
}
|
||
|
|
if (value is bool valueBool)
|
||
|
|
{
|
||
|
|
value = valueBool ? 1 : 0;
|
||
|
|
}
|
||
|
|
if (value is ICollection valueCol)
|
||
|
|
{
|
||
|
|
value = valueCol.Count;
|
||
|
|
}
|
||
|
|
if (value is Enum en)
|
||
|
|
{
|
||
|
|
value = System.Convert.ToInt32(en);
|
||
|
|
}
|
||
|
|
if (ulong.TryParse(value.ToString(), out ulong valueLong))
|
||
|
|
{
|
||
|
|
// Exact match for false
|
||
|
|
if (FalseValueInt.HasValue && FalseValueInt == valueLong) return FalseValue;
|
||
|
|
// Exact match for true
|
||
|
|
if (TrueValueInt.HasValue && TrueValueInt == valueLong) return TrueValue;
|
||
|
|
// Any value for false
|
||
|
|
if (!FalseValueInt.HasValue) return FalseValue;
|
||
|
|
// Any value for true
|
||
|
|
if (!TrueValueInt.HasValue) return TrueValue;
|
||
|
|
}
|
||
|
|
return TrueValue;
|
||
|
|
}
|
||
|
|
|
||
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||
|
|
{
|
||
|
|
// Convert with potential lose exact value match
|
||
|
|
return Equals(value, TrueValue) ? TrueValueInt : FalseValueInt;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|