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(); } }