Связанный WPF TextBox не обновляет значение, когда связанное свойство применяет некоторые бизнес-правила

Я использую .NET 4.0. У меня есть очень простой код, который позволяет пользователю вводить цифры от 1 до 99 999 (включительно). У меня есть некоторая логика в установщике свойств, которая предотвращает применение последнего значения, если оно не соответствует бизнес-правилам (например, это не число или число слишком большое).

    public class MainViewModel : INotifyPropertyChanged
{
    #region Fields

    private string _text = string.Empty;

    #endregion // Fields

    #region Properties

    public string Text
    {
        get { return _text; }

        set
        {
            if (_text == value) return;

            if (IsValidRange(value))
            {
                _text = value;
            }

            OnPropertyChanged("Text");
        }
    }

    #endregion // Properties

    #region Private Methods

    private bool IsValidRange(string value)
    {
        // An empty string is considered valid.
        if (string.IsNullOrWhiteSpace(value)) return true;

        // We try to convert to an unsigned integer, since negative bill numbers are not allowed,
        // nor are decimal places.
        uint num;
        if (!uint.TryParse(value, out num)) return false;

        // The value was successfully parse, so we know it is a non-negative integer.  Now, we
        // just need to make sure it is in the range of 1 - 99999, inclusive.
        return num >= 1 && num <= 99999;
    }

    #endregion // Private Methods

    #region INotifyPropertyChanged Implementation

    public event PropertyChangedEventHandler PropertyChanged;

    [NotifyPropertyChangedInvocator]
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }

    #endregion // INotifyPropertyChanged Implementation
}

Проблема, с которой я сталкиваюсь, заключается в том, что когда значение недопустимо, а я просто игнорирую его, TextBox, связанный с этим свойством, не обновляется, чтобы отразить это изменение; скорее, он просто сохраняет значение при вводе. Вот как у меня привязано свойство:

        <TextBox Grid.Row="0"
             Text="{Binding Path=Text, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>

Может кто-нибудь сказать мне, что я делаю не так?

Я прочитал много вопросов, которые казались очень похожими на это, но ни один из ответов не помог мне. Странно то, что, когда я не проверяю на основе чисел, а просто изменяю весь набранный текст на верхний регистр, он работает просто отлично. Кажется, он просто не работает, когда я пытаюсь не устанавливать для свойства новое значение.

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

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