WPF - MVVM - Textbox ficando fora de sincronia com a propriedade viewmodel

Eu tenho uma exibição do WPF com um TextBox, vinculando o campo de texto para um ViewModel com UpdateSourceTrigger definido como PropertyChanged. No setter de propriedade no ViewModel, tenho uma simples verificação para evitar que o texto exceda 10 caracteres:

<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");
        }
    }
}

Se o valor não estiver definido, ainda assim RaisePropertyChanged (que simplesmente dispara PropertyChanged).

O problema é que quando eu digito o 11º caractere na interface do usuário, não atualizo _Name. Eu disparo PropertyChanged, e posso ver o acessor get chamado e retorna a string com apenas 10 caracteres. No entanto, meu TextBox não reflete isso; ainda mostra a string com 11 caracteres.

Além disso, é que se no 11º caractere eu alterar o texto no setter para "ERROR", e a propriedade fire for alterada, o TextBox DOES atualizará para mostrar o texto alterado.

Então, por que, se eu alterar o texto no setter de volta para o valor anterior, a interface do usuário não reflete isso?

Eu sei que existem maneiras alternativas de lidar com caracteres máximos, mas por que isso não funciona?

questionAnswers(1)

yourAnswerToTheQuestion