2012-09-04 25 views
0

我有一個TextBox控件的MVVM應用程序,我想驗證它不是空的。作爲評價應該爲每個擊鍵進行,我改變了綁定,它包含我可以爲WPF(MVVM)中的UpdateSourceTrigger組合TextBox控件的不同設置嗎?

Text={Binding ..., UpdateSourceTrigger=PropertyChanged}

現在我也想當TextBox控件失去其重點要執行的操作,所以默認行爲TextBox控件將是合適的。我的問題是我不知道如何組合這兩個設置(如果可能的話)。

有什麼想法?如何對關鍵筆畫做出反應以適應LostFocus事件?

+0

豆你希望在文本框失去焦點觸發您的視圖模型的東西還是要處理它在後面的代碼TextBox放置在哪個頁面/窗口? –

+0

我想避免在代碼後面 - 我需要查詢數據庫。 – Gorgsenegger

回答

1

您通常會將IDataErrorInfoINotifyDataErrorInfo接口連接到您的ViewModels,以便在MVVM中處理此問題。

此外,attributes真的很強大,可能可以爲您提供一個很好的解決方案,具體取決於您的要求。在ViewModel中看起來像這樣。

[Required(ErrorMessage = "Field 'Range' is required.")] 
[Range(1, 10, ErrorMessage = "Field 'Range' is out of range.")] 
public int Range 
{ 
    get 
    { 
     return this.range; 
    } 
    set 
    { 
     if (this.range != value) 
     { 
      this.range = value; 
      this.OnPropertyChanged("Range"); 
     } 
    } 
} 

enter image description here

我建議你看一看這些文章。

基於屬性驗證在WPF MVVM應用 http://www.codeproject.com/Articles/97564/Attributes-based-Validation-in-a-WPF-MVVM-Applicat

驗證用戶輸入 - WPF MVVM http://www.codeproject.com/Articles/98681/Validating-User-Input-WPF-MVVM

WPF驗證與MVVM http://weblogs.asp.net/marianor/archive/2009/04/17/wpf-validation-with-attributes-and-idataerrorinfo-interface-in-mvvm.aspx

屬性和IDataErrorInfo的接口

使用IDataErrorInfo的與Silverlight和WPF http://www.arrangeactassert.com/using-idataerrorinfo-for-validation-in-mvvm-with-silverlight-and-wpf/

相關問題