C#,如何验证wpf文本框值?

时间:2011-04-03 17:46:08

标签: c# wpf data-binding

TextBox:

<TextBox Text="{Binding Path=nSetting, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Name="tbSetting" />

班级:

public class FormLink
{
    private string _nSetting;

    public string nSetting 
    { 
        get 
        { 
            return this.validateNumberValue(this._nSetting, 256, 9999, 56);
        } 
        set
        {
            this._nSetting = this.validateNumberValue(value, 256, 9999, 56);
        } 
    }

    private string validateNumberValue(string number, int nMaxReturn, int nMaxParse, int nDefault)
    {
        int pNum = nMaxParse; 
        Int32.TryParse(number, out pNum);

        if (pNum == 0)
        {
            return nDefault.ToString();
        }
        else if (pNum < nMaxReturn)
        {
            return pNum.ToString(); 
        }
        else if (pNum > nMaxReturn)
        {
            return nMaxReturn.ToString();
        }
        else
        {
            return nDefault.ToString();
        }
    }
}  

如何让此文本框正确更新?

现在,如果数字&gt;它会更新为256 256 ..但是...如果我继续输入,它不会重置为256.此外,在10个字符后,它重置为0.我也可以开始输入0并继续保持无限制。

如何让它始终更新?
数字为10个字符后,为什么重置为0? 为什么多个0没有像我编码那样重置为56?

1 个答案:

答案 0 :(得分:1)

WPF 4 TextBox(see my question)中存在错误。在那里发布的解决方案有效。