2013-07-19 37 views
0

我使用的是使用GalaSoft light Framework的MVVM(mvvmlight(wpf4))。我有問題驗證用戶輸入的數據和顯示指示用戶輸入爲空/不正確的MessageBox,我想使用INotifyDataErrorInfoarticle,但不支持wpf4。使用MVVM Light輸入驗證和UI異常

private string _password; 
    private string _userName; 

    [Required(AllowEmptyStrings = false, ErrorMessage = "Username is required")] 
    public string UserName 
    { 
     get { return _userName; } 
     set 
     { 
      if (_userName != value) 
      { 
       // ValidateProperty("UserName", value); 
       _userName = value; 
       base.RaisePropertyChanged("UserName"); 

      } 
     } 
    } 

    [Required(AllowEmptyStrings = false, ErrorMessage = "Password is required")] 
    public string Password 
    { 
     get { return _password; } 
     set 
     { 
      if (_password != value) 
      { 
       // ValidateProperty("Password", value); 
       _password = value; 
       base.RaisePropertyChanged("Password"); 
      } 
     } 
    } 

如何使用Messanger在MVVM光輸入驗證?(從保存按鈕將消息發送到視圖模型檢查輸入值)。

+0

嘿它它爲你工作..? – loop

+0

不,不要在驗證中顯示消息。 –

回答

1

你可以這樣button.click事件發送消息..

Messenger.Default.Send<string>("showattraction", "attraction"); 

第一個字符串消息,另一種是令牌varifying它..

,並在那裏你recive此消息做this..in CONSTRU構造函數..

Messenger.Default.Register<string>(this, "attraction", GetLineDetails); 

做你的工作在GetLineDetails方法..

public void GetLineDetails(string Message) 
    {   
     // work here 
} 
+0

非常感謝,我能以這種方式使用DataAnnotations和ValidatesOnExceptions嗎? –

2

思想我想補充我怎麼都被拉斷輸入驗證與MVVM光(模型驗證不只是輸入)和Fluent Validation框架。它適合我,並且允許您將「IsValid」附加到您的模型中,以便隨時進行驗證。

我寫了一篇關於它的詳細博客文章。 MVVM Light and Model Validation

雖然這是真的MVVM光本身並沒有任何東西我想提供一個可能的方法爲其他人嘗試拉斷。我嘗試過使用INotifyDataErrorInfo和其他方法,並發現它們缺少一些。希望它能幫助別人。