2013-11-28 43 views
1

我有一個數據網格,我需要使用代碼添加一些列。其中一列需要包含雙值(不包含文本和空字符串)。該綁定是使用Double屬性上的代碼執行的,因此當該值有效時,這似乎工作正常。在WPF數據網格中捕獲格式異常

當用戶輸入無效值時,該列變爲紅色。但是,如果我檢查列的內容,它仍然是舊值,我可以看到rowChanged事件沒有發生。

如果我什麼也沒做,我注意到輸出中有一個system.formatexception被拋出,如果我添加一個validationrule,它會消失,我可以返回一個validationResult爲false,但我不知道該怎麼辦用它後...

所以我的問題是這樣的:我可以捕捉輸出中的FormatException和如何?

我能做些什麼來「捕捉」我的驗證規則失敗?

回答

0

個人而言,我寧願避免的錯誤,而不是處理它。你可以通過創建一個非常簡單的數字TextBox來實現這一點。這樣,用戶將無法輸入無效值。您只需處理幾個事件即可達到預期結果,因此這是AttachedProperty的理想選擇。如果你看一下Create WPF TextBox that accepts only numbers的帖子,你可以找到如何做到這一點。

0

當綁定嘗試將值設置回您的源屬性和引發類型不匹配異常時。爲此,您可以設置FallBackValue綁定,如果您不希望它變爲紅色,則設置爲ValidatesOnExceptions = false在綁定