WPF - MVVM - Pole tekstowe zsynchronizowane z właściwością viewmodel

Mam widok WPF z TextBoxem, wiążąc pole tekstowe z ViewModel z UpdateSourceTrigger ustawionym na PropertyChanged. W ustawniku właściwości w ViewModel mam proste sprawdzenie, aby tekst nie przekroczył 10 znaków:

<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        this.DataContext = new MainViewModel();
    }
}


public string Name
{
    get { return _Name; }
    set
    {
        if (_Name != value)
        {
            if (value.Length <= 10)
            {
                _Name = value;
            }
            RaisePropertyChanged("Name");
        }
    }
}

Jeśli wartość nie jest ustawiona, nadal RaisePropertyChanged (który po prostu uruchamia właściwość PropertyChanged).

Problem polega na tym, że gdy wpisuję 11 znak w interfejsie użytkownika, nie aktualizuję _Name. Odpalam PropertyChanged i widzę, że get accessor zostaje wywołany i zwraca łańcuch zawierający tylko 10 znaków. Jednak mój TextBox tego nie odzwierciedla; nadal wyświetla łańcuch zawierający 11 znaków.

Poza tym, jeśli na 11 znaku zmieniam tekst w ustawniku na „BŁĄD”, a właściwość ognia zmieniła się, aktualizacja TextBox DOES pokazuje zmieniony tekst.

Dlaczego więc, jeśli zmienię tekst w ustawniku z powrotem na poprzednią wartość, interfejs użytkownika nie odzwierciedla tego?

Wiem, że istnieją alternatywne sposoby obsługi max znaków, ale dlaczego to nie zadziała?

questionAnswers(1)

yourAnswerToTheQuestion