I have a `ComboBox` whose `SelectedItem` and `ItemsSource` are data-bound to a view model. Whenever `"Blue"` is selected, the setter instead sets the value `"Green"` and fires a `PropertyChanged` event.

I'd expect the `ComboBox` to display `"Green"` in that case, instead the displayed value remains `"Blue"`.

I've tried the same with a `CheckBox` (bind to `IsChecked`, revert the value to `false` whenever it's set to `true` and fire `PropertyChanged`), and it works as expected there.

`MainWindow.xaml`:

```
<Window x:Class="WpfTestApplication.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="80" Width="100">
    <Grid>
        <ComboBox x:Name="ComboBox" SelectedItem="{Binding SelectedItem}" ItemsSource="{Binding Values}" />
    </Grid>
</Window>

```

`MainWindow.xaml.cs`:

```
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;

namespace WpfTestApplication
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ComboBox.DataContext = new ViewModel();
        }
    }

    public class ViewModel : INotifyPropertyChanged
    {
        public List<string> Values { get; set; } = new List<string>
        {
            "Green", "Red", "Blue"
        };

        public string SelectedItem
        {
            get { return selectedItem; }
            set
            {
                selectedItem = value;

                if (selectedItem == "Blue")
                    selectedItem = "Green";

                SelectedItemChanged();
            }
        }

        private string selectedItem = "Red";

        public event PropertyChangedEventHandler PropertyChanged;

        public void SelectedItemChanged() =>
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedItem)));
    }
}

```