@@ -690,7 +690,7 @@ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs chang
                 if (value is null)
                 {
                     // Clearing SelectedValueBinding makes the SelectedValue the item itself
-                    SelectedValue = SelectedItem;
+                    SetCurrentValue(SelectedValueProperty, SelectedItem);
                     return;
                 }
 
@@ -710,7 +710,7 @@ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs chang
                     }
 
                     // Re-evaluate SelectedValue with the new binding
-                    SelectedValue = _bindingHelper.Evaluate(selectedItem);
+                    SetCurrentValue(SelectedValueProperty, _bindingHelper.Evaluate(selectedItem));
                 }
                 finally
                 {
@@ -1080,7 +1080,7 @@ private void SelectItemWithValue(object? value)
             {
                 var itemValue = _bindingHelper.Evaluate(item);
 
-                if (itemValue.Equals(value))
+                if (Equals(itemValue, value))
                 {
                     return item;
                 }
@@ -1103,7 +1103,7 @@ private void UpdateSelectedValueFromItem()
                 try
                 {
                     _isSelectionChangeActive = true;
-                    SelectedValue = item;
+                    SetCurrentValue(SelectedValueProperty, item);
                 }
                 finally
                 {
@@ -1117,7 +1117,7 @@ private void UpdateSelectedValueFromItem()
             try
             {
                 _isSelectionChangeActive = true;
-                SelectedValue = _bindingHelper.Evaluate(item);
+                SetCurrentValue(SelectedValueProperty, _bindingHelper.Evaluate(item));
             }
             finally
             {
@@ -1381,7 +1381,7 @@ public BindingHelper(IBinding binding)
             public static readonly StyledProperty<object> ValueProperty =
                 AvaloniaProperty.Register<BindingHelper, object>("Value");
 
-            public object Evaluate(object? dataContext)
+            public object? Evaluate(object? dataContext)
             {
                 // Only update the DataContext if necessary
                 if (!Equals(dataContext, DataContext))