2012-05-09 63 views
0

我正在嘗試不同的驗證方法,我遇到了新的INotifyDataErrorInfo接口的問題。驗證異常與IDataErrorInfo和新的INotifyDataErrorInfo

例如寫入一個只接受10個字符的綁定文本框時。我寫了11個字符並列出。驗證會啓動並將文本框標記爲紅色等。現在,我不想將此無效值寫入此綁定的源,但如果我沒有這樣做,我立即將文本框中的值重置爲最後一個有效值。就好像該綁定在綁定上執行了UpdateTarget,即使出現了錯誤。

通過使用ValidatesOnExceptions並在setter中拋出異常,我得到了我之後的行爲。如果在setter中拋出異常,則綁定不會從源更新它的值。這會在文本框中留下無效值,以便我可以使用它來使其有效。我認爲這比將底層對象中的無效值存儲好得多。

問題是爲什麼IDataErrorInfo和新的INotifyDataErrorInfo以這種方式運行,即使存在錯誤,它也會從源更新目標?我可以使其行爲更像ValidatesOnExceptions嗎?

我需要的,因爲其他的功能,如異步驗證INotifyDataErrorInfo ...

回答

2

如果您需要驗證值之前它一直致力於爲源,那麼你需要創建一個自定義的驗證規則和設置ValidationStep爲RawProposedValue或ConvertedProposedValue。

有關更多信息,請參閱有關Validation ProcessValidationStep的文檔。