2011-06-23 156 views
0

我有一個WPF工具包DataGrid ItemsSource屬性綁定到DataTable。 DataTable在其中一列上有一個唯一的約束。如果我嘗試在列中輸入非唯一數據,則會從我無法訪問的代碼區域引發異常(這很好),然後應用程序崩潰(這很糟糕)。如何處理此異常?

如何捕獲或以其他方式導致此異常被處理,以便應用程序不會崩潰?

+1

請問您能展示一些代碼嗎?你是否也能捕捉到這個例外,你在catch語句中做了什麼 – Hasanain

+0

@Hananain,你想看什麼代碼?不,我不明白這個例外,但我想 - 因此是一個問題。 –

+0

假設你有一個你沒有源代碼的庫/ dll,異常冒泡到你的代碼中...所以你可以顯示代碼,至於你在哪裏/如何使用dataTable ... – Hasanain

回答

0

我已經解決了這個問題,在DataGrid上爲CellEditEnding事件添加了一種驗證。如果驗證失敗,我將e.Cancel設置爲true

這可能不是正確的方法去解決這個問題,但它有最終的結果。

+0

這是一種可行的解決方法。如果您從DataTable轉移到對象數據中,則可以將您的數據類設置爲實現IDataErrorInfo並使用它來執行驗證。 WPF使用得非常好,出錯時,您可以顯示一個ValidationErrorTemplate項,修改控件以向用戶提供有關如何正確編輯字段/屬性的信息。查看 – CodeWarrior