NotNullToVisibilityConverter.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Globalization;
  2. using PixiEditor.AvaloniaUI.Helpers.Converters;
  3. namespace PixiEditor.Helpers.Converters;
  4. // TODO: check if this converter can be replaced with StringConverters.IsNullOrEmpty, StringConverters.IsNotNullOrEmpty, ObjectConverters.IsNull, or ObjectConverters.IsNotNull
  5. internal class NotNullToVisibilityConverter
  6. : MarkupConverter
  7. {
  8. public bool Inverted { get; set; }
  9. public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  10. {
  11. bool isNull = IsDefaultValue(value);
  12. if (Inverted)
  13. {
  14. isNull = !isNull;
  15. }
  16. return isNull ? false : true;
  17. }
  18. bool IsDefaultValue(object obj)
  19. {
  20. if (obj is null)
  21. {
  22. return true;
  23. }
  24. var type = obj.GetType();
  25. if (type.IsValueType)
  26. {
  27. object defaultValue = Activator.CreateInstance(type);
  28. return obj.Equals(defaultValue);
  29. }
  30. return false;
  31. }
  32. }