文本更改时,从ViewModel更新TextBox文本

时间:2013-04-27 20:00:25

标签: wpf binding textbox

我有一个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);
    }

0 个答案:

没有答案