我一直在使用WPF和MVVM模式一段時間。我很難驗證以「正常」方式工作:WPF中的表單驗證
1)我在我的ViewModel中實現了IDataErrorInfo接口。在XAML看起來像:
<TextBox Grid.Column="1"
Grid.Row="1"
Text="{Binding Path=ProjectKey, ValidatesOnDataErrors=True, UpdateSourceTrigger=LostFocus}" />
這裏的問題是,引發LostFocus和觸發器的PropertyChanged是否使用,將文本框的用戶不斷選項卡來對照驗證之前。這意味着如果我正在驗證空字段,用戶首次打開表單時將看到大量紅色。理想情況下,只有在第一次「丟失焦點」或「屬性更改」後,或者點擊「提交」按鈕後,輸入纔會被驗證。
2)另一個問題是當用戶點擊「提交」時最後驗證。在提交到數據庫之前,您需要驗證某些內容,例如重複數據。我知道我可以使用UpdateSourceTrigger = Explicit並在所有控件上調用UpdateSource方法。我想知道在MVVM模式中是否有合適的方法來做到這一點。它看起來像這樣的代碼不應該在視圖模型,因爲它是非常查看特定...
任何想法都會很棒。我搜索了很多網上,但似乎無法找到合適的解決方案...
http://stackoverflow.com/questions/2821998/how-can-i-get-wpf-to-not-display-validation-errors-upon-initial-display-of-contro/2829884#2829884 could solve這兩個問題 – nash 2011-08-09 18:52:27