0

我有一个TextBox.Text绑定到视图模型属性的属性。

我想确保Text只有数字,并且值将被限制为 1 < X < 200。我不想在后面的代码中显示任何代码,我想对其进行单元测试。

下面的代码适用于限制规则,但对于 IsDigit 规则,它只适用于第一次然后停止......为什么?

XAML:

<TextBox Width="150" Height="30" Text="{Binding Degree,
         UpdateSourceTrigger=PropertyChanged}"/>

后面的代码:

 private string degree;
    public string Degree
    {
        get { return degree; }
        set
        {
            if (degree == value || value == string.Empty)
            {
                return;
            }

            degree = value;
            if (IsDigit(degree))
            {
                int intValue;
                intValue = int.Parse(degree);
                if (intValue < 1 || intValue > 200)
                {
                    degree = string.Empty;
                }
            }
            else
            {
                degree = string.Empty;
            }

            OnPropertyChanged("Degree");
        }
    }

    private static bool IsDigit(string text)
    {
        var regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text
        return !regex.IsMatch(text);
    }
4

0 回答 0