MVVM批准的方法用于禁用文本框中的某些字符?

时间:2014-04-08 20:16:08

标签: c# wpf mvvm

有没有办法在不使用代码隐藏文件中的代码的情况下禁止将某些字符写入wpf文本框?

我有一些绑定到文本框的int字段,我只想限制为0-9键。如果我输入任何其他内容,我会收到红色验证错误,但这还不够。

2 个答案:

答案 0 :(得分:1)

事实上,这项任务在xaml中无法实现。

在某些时候,你需要编写一些代码。

这些链接可能很有用

http://blog.magnusmontin.net/2013/08/26/data-validation-in-wpf/ http://soumya.wordpress.com/2010/05/09/wpf-simplified-part-15-data-validation/

答案 1 :(得分:1)

我建议使用IDataErrorInfo进行WPF验证,因为WPF已经了解如何使用它,并且易于实现。

您必须在类上添加接口,所需的方法如下所示:

#region IDataErrorInfo Members

public string Error
{
    get { return null; }
}

public string this[string columnName]
{
    get
    {
        if (columnName == "YourProperty")
        {
            int property = Convert.ToInt32(YourProperty);
            if (property < 0 || property > 9)
                return "The value must be between 0 and 9";
        }

        return string.Empty;
    }
}

#endregion

接下来,您需要在TextBox绑定中设置ValidatesOnDataErrors=True,以便在属性更改时运行验证。

当出现问题时,它会在您的控件上添加一个红色边框,并在您的验证中添加消息:

Error message

您可以阅读有关如何使用界面的更多信息: