2011-09-08 68 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

相關問題