WPF - MVVM - синхронизация текстового поля со свойством viewmodel

У меня есть представление WPF с TextBox, связывающее текстовое поле с ViewModel с UpdateSourceTrigger, установленным в PropertyChanged. В установщике свойств в ViewModel у меня есть простая проверка, чтобы текст не превышал 10 символов:

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

Если значение не установлено, я все еще RaisePropertyChanged (который просто запускает PropertyChanged).

Проблема в том, что когда я набираю 11-й символ в пользовательском интерфейсе, я не обновляю _Name. Я запускаю PropertyChanged и вижу, как вызывается метод доступа get, и он возвращает строку, содержащую всего 10 символов. Однако мой TextBox не отражает этого; он по-прежнему показывает строку из 11 символов.

Кроме того, если на 11-м символе я изменил текст в установщике на «ОШИБКА», а свойство огня изменилось, TextBox ОБНОВЛЯЕТСЯ обновляться, чтобы показать измененный текст.

Так почему же, если я верну текст в установщике обратно к предыдущему значению, пользовательский интерфейс не отразит это?

Я знаю, что есть альтернативные способы обработки макс символов, но почему это не сработает?

Ответы на вопрос(1)

Ваш ответ на вопрос