我正在做一個使用Prism 4和WPF的應用程序,並且我有一些輸入驗證,它按預期工作,但是當用戶單擊一個按鈕時,我需要知道在那一刻是否存在驗證錯誤呈現。使用PRISM4檢測驗證錯誤
Prism4是否有一些實現來處理這個問題,或者我必須手工實現它?
我正在做一個使用Prism 4和WPF的應用程序,並且我有一些輸入驗證,它按預期工作,但是當用戶單擊一個按鈕時,我需要知道在那一刻是否存在驗證錯誤呈現。使用PRISM4檢測驗證錯誤
Prism4是否有一些實現來處理這個問題,或者我必須手工實現它?
處理驗證錯誤並不是Prism作爲庫的一部分提供的。棱鏡確實提供了在實現驗證時可能有用的IConfirmNavigationRequest
interface,它使您能夠在某些情況下停止導航 - 例如,當頁面未通過驗證時。
要在您的應用程序中實施驗證,我推薦使用IDataErrorInfo
interface(或.NET 4.5/Silverlight中的INotifyDataErrorInfo
)。
編輯
要知道你的觀點是否通過了驗證,你需要公開您的視圖模型的IsValid
屬性,將返回此信息。一種方法是檢查視圖模型並返回這些數據;另一種方法是使用Validation.AddErrorHandler
將您的ViewBase
註冊到其錯誤事件,並在視圖模型上調用ViewModelBase.AddError()
/ViewModelBase.RemoveError()
。這樣,您的視圖模型就知道驗證錯誤,並且可以輕鬆返回視圖是否有效。
是的,我在我的模型中實現IDataErrorInfo,但我有一個窗口,我正在驗證一些文本框。現在,當用戶單擊「保存」按鈕時,我需要確保當前沒有驗證錯誤來繼續保存文本框中的文本。 – Michelle 2012-07-24 20:13:21
@Michelle請看我更新的答案。 – 2012-07-24 20:25:50
嗨@Lester我會用第二種方法,但我不知道如何從我的模型中調用AddError()和RemoveError()。你能幫我嗎? – Michelle 2012-07-24 21:23:28