2011-03-17 90 views
2

使用mvvm學習wpf(使用EF作爲ORM)。驗證失敗wpf mvvm

在我的視圖模型我有屬性:

//---------------ClientNew 
     public const string ClientNewConst = "ClientNew"; 
     private TBL_CLIENT _clientNew = new TBL_CLIENT(); 
     public TBL_CLIENT ClientNew 
     { 
      get 
      { 
       return _clientNew; 
      } 

      set 
      { 
       if (_clientNew == value) 
       { 
        return; 
       } 

       var oldValue = _clientNew; 
       _clientNew = value; 

       // Update bindings, no broadcast 
       RaisePropertyChanged(ClientNewConst); 
      } 
     } 

其中TBL_CLIENT - 是反映在DB TBL_CLIENT表的entittyobject

現在,在我看來,我綁定一堆這樣的文本框(例如僅在客戶的名字):

<TextBox Style="{StaticResource ResourceKey=entryFormTextBox}" 
             Text="{Binding ClientNew.CLIENT_FIRST_NAME, 
           ValidatesOnDataErrors=True, 
           NotifyOnValidationError=true, 
           ValidatesOnExceptions=True, 
           UpdateSourceTrigger=LostFocus}" 
             Grid.Column="1" 
             Grid.Row="1" /> 

我試圖用不同的觸發器,updatesource ..還是德驗證不起作用。

哦,我有IDataErrorInfo的接口在我視圖模型實現的(但它永遠不會打吧..)

#region IDataErrorInfo Members 

     string IDataErrorInfo.Error 
     { 
      get { throw new NotImplementedException(); } 
     } 

     string IDataErrorInfo.this[string columnName] 
     { 
      get 
      { 
       if (string.IsNullOrEmpty("ClientNew.CLIENT_FIRST_NAME")) 
       { 
        return "Client Name is required";      
       } 
       return null; 
      } 
     } 

     #endregion 

所以,問題..我怎樣才能使用IDataErrorInfo的我的情況下實現儘可能簡單的驗證,其中我沒有在ModelView中爲每個實體對象定義單獨的屬性,但該屬性接受整個實體對象?

在此先感謝,亞歷克斯

回答

0

你可能有一個看的WPF Application Framework (WAF)的BookLibrary示例應用程序。它直接在實體中定義驗證規則。請查看「BookLibrary.Domain/Book.cs」。

+0

謝謝,會檢查。 – HotFrost 2011-03-25 14:44:07