我有一个使用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
答案 0 :(得分:1)
提供自定义验证消息的最简单方法是在数据对象类中实现IDataErrorInfo
Interface或INotifyDataErrorInfo
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"); } }
}
请在线搜索有关实施这些界面的更多信息。