Setzen Sie das ausgewählte Kombinationsfeld am Set mit MVVM zurück

Ich verwende eine ComboBox in meiner WPF-Anwendung und folge MVVM. Es gibt eine Liste von Zeichenketten, die ich in meiner ComboBox anzeigen möchte.

XAML:

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

Modell anzeigen:

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.
    }
}

Jetzt funktioniert dieser Code einwandfrei. Ich kann aus der Ansicht auswählen und Änderungen in ViewModel abrufen. Wenn ich SelectedItem in meinem ViewModel ändere, kann ich es in meiner Ansicht anzeigen.

Nun hier ist, was ich zu erreichen versuche. Wenn ich das ausgewählte Element aus meiner Sicht ändere, muss ich überprüfen, ob der Wert gut / schlecht ist (oder irgendetwas anderes), und das ausgewählte Element muss nicht festgelegt werden. Mein Ansichtsmodell ändert sich also wie folgt.

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.
    }
}

Wenn ich jetzt diesen Code ausführe und SomeCondition (value) false zurückgibt, gibt SelectedItem den alten Zeichenfolgenwert zurück, aber in meiner Ansicht ist das ausgewählte Element in ComboBox der Wert, den ich ausgewählt habe. Nehmen wir also an, ich habe eine Sammlung von 10 Zeichenfolgen in meiner ComboBox. Alle Werte außer dem zweiten und vierten Element sind gut (SomeCondition gibt für den zweiten und vierten Wert false zurück). Was ich will, dass wenn ich das 2. oder 4. Element auswähle, sich das ausgewählte Element nicht ändert. Aber mein Code macht das nicht richtig. Wenn ich das 2. Element auswähle, wird in der Ansicht das 2. Element weiterhin als ausgewählt angezeigt. Ich weiß, dass in meinem Code etwas nicht stimmt. Aber was ist es?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage