diff --git a/src/Avalonia.Controls/Converters/EnumToBooleanConverter.cs b/src/Avalonia.Controls/Converters/EnumToBooleanConverter.cs
new file mode 100644
index 0000000000..ba1c4cab3e
--- /dev/null
+++ b/src/Avalonia.Controls/Converters/EnumToBooleanConverter.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Globalization;
+using Avalonia.Data;
+using Avalonia.Data.Converters;
+
+namespace Avalonia.Controls.Converters
+{
+ ///
+ /// Converter to convert an enum value to bool by comparing to the given parameter.
+ /// Both value and parameter must be of the same enum type.
+ ///
+ ///
+ /// This converter is useful to enable binding of radio buttons with a selected enum value.
+ ///
+ public class EnumToBooleanConverter : IValueConverter
+ {
+ ///
+ public object? Convert(
+ object? value,
+ Type targetType,
+ object? parameter,
+ CultureInfo culture)
+ {
+ if (value == null &&
+ parameter == null)
+ {
+ return true;
+ }
+ else if (value == null ||
+ parameter == null)
+ {
+ return false;
+ }
+ else
+ {
+ return value!.Equals(parameter);
+ }
+ }
+
+ ///
+ public object? ConvertBack(
+ object? value,
+ Type targetType,
+ object? parameter,
+ CultureInfo culture)
+ {
+ if (value is bool boolValue)
+ {
+ return boolValue ? parameter : BindingOperations.DoNothing;
+ }
+ else
+ {
+ return BindingOperations.DoNothing;
+ }
+ }
+ }
+}
diff --git a/src/Avalonia.Controls/Converters/EnumValueEqualsConverter.cs b/src/Avalonia.Controls/Converters/EnumValueEqualsConverter.cs
index 1a33a82ca4..abd0fe1dfd 100644
--- a/src/Avalonia.Controls/Converters/EnumValueEqualsConverter.cs
+++ b/src/Avalonia.Controls/Converters/EnumValueEqualsConverter.cs
@@ -10,7 +10,11 @@ namespace Avalonia.Controls.Converters
public class EnumValueEqualsConverter : IValueConverter
{
///
- public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
+ public object? Convert(
+ object? value,
+ Type targetType,
+ object? parameter,
+ CultureInfo culture)
{
// Note: Unlike string comparisons, null/empty is not supported
// Both 'value' and 'parameter' must exist and if both are missing they are not considered equal
@@ -46,7 +50,11 @@ namespace Avalonia.Controls.Converters
}
///
- public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
+ public object? ConvertBack(
+ object? value,
+ Type targetType,
+ object? parameter,
+ CultureInfo culture)
{
throw new System.NotImplementedException();
}