Files
2026-02-26 11:36:32 +03:00

46 lines
1.5 KiB
C#

using System.Globalization;
using Avalonia.Data.Converters;
namespace GSS2.UI.Core.Converters;
public class EqualsConverter : IValueConverter
{
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
if (value is null && parameter is null)
return true;
if (value is null || parameter is null)
return false;
var valueType = value.GetType();
var paramType = parameter.GetType();
if (valueType == paramType)
return value == parameter;
if (parameter is string ps)
return value switch
{
byte v => byte.TryParse(ps, out var p) && v == p,
short v => short.TryParse(ps, out var p) && v == p,
ushort v => ushort.TryParse(ps, out var p) && v == p,
int v => int.TryParse(ps, out var p) && v == p,
uint v => uint.TryParse(ps, out var p) && v == p,
long v => long.TryParse(ps, out var p) && v == p,
ulong v => ulong.TryParse(ps, out var p) && v == p,
float v => float.TryParse(ps, out var p) && v == p,
double v => double.TryParse(ps, out var p) && v == p,
decimal v => decimal.TryParse(ps, out var p) && v == p,
_ => false
};
return false;
}
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}