Lié WPF zone de texte n'est pas de mise à jour de la valeur lorsque la propriété liée applique certaines règles de gestion

Je suis à l'aide .NET 4.0. J'ai quelques code très simple qui permet à l'utilisateur de saisir un nombre entre 1 et 99 999 habitants (inclus). J'ai un peu de logique dans l'accesseur de Propriété qui empêche la dernière valeur d'être appliquée si elle ne respecte pas les règles de gestion (par exemple, il n'est pas un nombre ou le nombre est trop grand).

    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
}

Le problème, je suis en cours d'exécution en est que lorsque la valeur n'est pas valide et je viens d'ignorer la valeur, la zone de texte lié à cette propriété n'a pas de mise à jour pour refléter cette modification; plutôt, il vient conserve la valeur comme il est entré. Voici comment j'ai la propriété lié:

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

Quelqu'un peut me dire ce que je fais mal?

J'ai lu beaucoup de questions qui semblait très similaire à ce problème, mais aucune réponse n'a fonctionné pour moi. La chose étrange est que lorsque je ne valide pas basées sur des chiffres, mais il suffit de changer tout le texte tapé en majuscule, il fonctionne très bien. Il semble juste de ne pas fonctionner lorsque j'essaie de ne pas définir la Propriété à la nouvelle valeur.

OriginalL'auteur Matt Zappitello | 2014-03-10