2011-09-08 81 views

回答

1

IDataErrorInfo是WPF的数据验证机制。你不喜欢微软的一致性吗? ;)

这样对您的视图模型实现IDataErrorInfo的:

public class MyViewModel : IDataErrorInfo 
{ 
     public string Error 
     { 
      get { 
       return GetErrorStringForThisViewModelInGeneral(); 
      } 
     } 

     public string this[string columnName] 
     { 
      get 
      { 
       string result = null; 

       switch (columnName) 
       { 
        case "Quantity": 
         if (Quantity <= 0) 
          result = "Quantity must be greater than 1."; 
        break; 
       } 
       return result; 
      } 

} 

里面的属性(又名这个[])验证的,你可以在EnterpriseLibrary,使用属性自定义验证,或任何使用验证你喜欢。我只是展示了一个基本的实现来帮助你开始。

+0

对不起,我指的是异步验证 - 即通过Web服务验证数量。 – Alberto

+3

要使验证异步,您应该旋转一个线程来执行验证(以避免挂起应用程序),然后当结果返回时,对要验证的属性(例如数量)执行NotifyPropertyChanged。当通知发生时,WPF将重新验证该字段,并且您应该能够设置一个条件,以便它不会远程重新验证(因为自上次验证以来该值未更改)。 –

+0

这就是我的想法 - 耻辱它需要这样一个样板代码:( – Alberto