forked from amkovkov/GranuSightSoftware2
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using System.Globalization;
|
|
|
|
using Avalonia.Data.Converters;
|
|
|
|
namespace GSS2.UI.Core.Converters;
|
|
|
|
public class NotEqualsConverter : IValueConverter
|
|
{
|
|
public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
|
|
{
|
|
if (value is null && parameter is null)
|
|
return false;
|
|
|
|
if (value is null || parameter is null)
|
|
return true;
|
|
|
|
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),
|
|
_ => true
|
|
};
|
|
|
|
return true;
|
|
}
|
|
|
|
public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
} |