在文本框中输入非数字时更改默认错误消息需要整数

时间:2015-06-10 11:50:03

标签: c# wpf mvvm

我有一个使用MVVM的WPF应用程序。它有一个需要整数的文本框。该文本框的XAML如下所示

<TextBox Name="textBoxElementWeight" 
    Text="{Binding ElementName=listBoxElement, Path=SelectedItem.Weight,
    UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True}"
    Validation.ErrorTemplate="{StaticResource ValidationTextBoxTemplate}"/>

视图模型实现接口INotifyDataErrorInfo。

当我删除要输入新文本的文本时,它会显示“无法转换”值。“

如何将此错误消息更改为我的?例如:“请输入一个数字。”

可以下载整个Visual Studio解决方案here

1 个答案:

答案 0 :(得分:1)

提供自定义验证消息的最简单方法是在数据对象类中实现IDataErrorInfo InterfaceINotifyDataErrorInfo Interface。我不会在这里进行详细的实施,因为有许多教程很容易在网上找到,但是,我将简要解释一下。

实现IDataErrorInfo接口时,您需要实现一个索引器属性,该属性包含string属性名称。它可以像这样使用:

public override string this[string propertyName]
{
    get
    {
        string error = string.Empty;
        if (propertyName == "Name" && Name.IsNullOrEmpty()) error = "You must enter the Name field.";
        else if (propertyName == "Name" && Name.Length > 100) error = "That name is too long.";
        ...
        return error;
    }
}

实现INotifyDataErrorInfo接口时,您在每个属性上使用DataAnnotation属性,如下所示:

[Required(ErrorMessage = "You must enter the Name field.")]
[StringLength(100, ErrorMessage = "That name is too long.")]
public string Name
{
    get { return name; }
    set { if (value != name) { name = value; NotifyPropertyChanged("Name", "Errors"); } }
}

请在线搜索有关实施这些界面的更多信息。