Restablecer el elemento seleccionado del cuadro combinado en el set usando MVVM

Estoy usando un ComboBox en mi aplicación WPF y sigo MVVM. Hay una lista de cadenas que quiero mostrar en mi ComboBox.

XAML:

<ComboBox ItemsSource="{Binding ItemsCollection}" SelectedItem="{Binding SelectedItem}" />

Ver Modelo:

public Collection<string> ItemsCollection; // Suppose this has 10 values.
private string _selectedItem;
public string SelectedItem
{
    get { return _selectedItem; }
    set
    {
        _selectedItem = value;
        Trigger Notify of property changed.
    }
}

Ahora este código está funcionando absolutamente bien. Puedo seleccionar desde la vista y puedo obtener cambios en ViewModel y si cambio SelectedItem desde mi ViewModel puedo verlo en mi vista.

Ahora esto es lo que estoy tratando de lograr. Cuando cambio el elemento seleccionado desde mi vista, necesito verificar que el valor sea bueno / malo (o algo así), establecer el elemento seleccionado, de lo contrario no lo establezca. Así que mi modelo de vista cambia así.

public string SelectedItem
{
    get { return _selectedItem; }
    set
    {
        if (SomeCondition(value))
            _selectedItem = value;           // Update selected item.
        else
            _selectedItem = _selectedItem;   // Do not update selected item.
        Trigger Notify of property changed.
    }
}

Ahora, cuando ejecuto este código y SomeCondition (valor) devuelve falso, SelectedItem devuelve un valor de cadena antiguo, pero en mi vista, el elemento seleccionado en ComboBox es el valor que seleccioné. Entonces asumamos que tengo una colección de 10 cadenas que se muestran en mi ComboBox. Todos los valores son buenos, excepto el segundo y cuarto elemento (SomeCondition devuelve false para el segundo y cuarto valor). Lo que quiero es que si selecciono el segundo o el cuarto elemento seleccionado, el elemento no cambie. Pero mi código no está haciendo esto correctamente. Si selecciono el segundo elemento, la vista aún muestra el segundo elemento seleccionado. Sé que hay algo mal en mi código. ¿Pero, qué es esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta