我使用DataAnnotation来验证输入控件.但ValidatesOnExceptions仅在用户在文本框中键入内容并按Tab键时才有效. (基本上是关于Lostfocus事件).
但如果用户从未在文本框中输入任何内容,请单击“提交”.这是行不通的.像ASP.NET一样.IsValid属性是否可以使用Silverlight中的任何属性或方法,这将验证UI上的所有控件?
解决方法
从Terence提供的URL获取帮助,我已经为您准备了以下解决方案.
这可以用来确保在服务调用之前设置所有属性.
这可以用来确保在服务调用之前设置所有属性.
public class PersonViewModel : EntityBase { private readonly RelayCommand saveCommand; public PersonViewModel(IServiceAgent serviceAgent) { saveCommand = new RelayCommand(Save) { IsEnabled = true }; } public RelayCommand SaveCommand // Binded with SaveButton { get { return saveCommand; } } public String Name // Binded with NameTextBox { get { return name; } set { name = value; PropertyChangedHandler("Name"); ValidateName("Name",value); } } public Int32 Age // Binded with AgeTextBox { get { return age; } set { age = value; PropertyChangedHandler("Age"); ValidateAge("Age",value); } } private void ValidateName(string propertyName,String value) { ClearErrorFromProperty(propertyName); if (/*SOME CONDITION*/) AddErrorForProperty(propertyName,"/*NAME ERROR MESSAGE*/"); } private void ValidateAge(string propertyName,Int32 value) { ClearErrorFromProperty(propertyName); if (/*SOME CONDITION*/) AddErrorForProperty(propertyName,"/*AGE ERROR MESSAGE*/"); } public void Save() { ValidateName("Name",name); ValidateAge("Age",age); if (!HasErrors) { //SAVE CALL TO SERVICE } } }