2014-01-24 128 views
0

我正在爲WPF DataBinding實現自定義ValidationRule。爲此,我只需從ValidationRule繼承並實現一個或多個抽象或虛擬方法。這是我採取的方法:您是否可以安全地從自定義的ValidationRule中返回null,以表示未執行驗證?

public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo, System.Windows.Data.BindingExpressionBase owner) 

ValidationResult對象我返回必須具有爲IsValid財產truefalse。這在邏輯上似乎是錯過了第三個選項Unknown或Undetermined。在某些情況下,驗證人可能不適用。

那麼我應該在這些情況下返回什麼?我可以安全地返回null嗎?

回答

0

不!一個驗證器不應該返回null任何過載的Validate方法,並且在你問它不應該拋出異常。在這兩種情況下,您的應用程序都會在框架代碼中遇到未處理的異常,並可能會崩潰。

所以,只要接受不完美的語義,並返回ValidationResult.ValidResult如果您希望您的自定義驗證器本質上是一個空操作。

消息來源:.NET 4.5測試版

相關問題