Почему привязка данных WPF поглощает исключения? - PullRequest
20 голосов
/ 11 июня 2009

Недавно я потратил много времени на отладку сетки данных WPF (из набора инструментов WPF). У меня был столбец, связанный с запросом linq со свойством, которое вызывало исключение (в несколько строк). WPF, кажется, ловит исключение и просто делает ячейки пустыми. Я исправил ошибку, вызвавшую исключение, но я хотел бы изменить поведение WPF. Я всегда хочу знать, если что-то не так. Почему проглатывание исключения является поведением по умолчанию и как я могу его изменить?

Ответы [ 5 ]

12 голосов
/ 11 июня 2009

Ошибки привязки данных изначально проглатываются, но они отображаются в диалоге OUTPUT в интерфейсе Visual Studio. Если вы хотите получать уведомления (и иметь как можно больший контроль над ним), вы можете использовать источники трассировки.

Беа Штольниц (Bea Stollnitz) предоставляет отличную статью об этом (и отладку привязок в целом) здесь:

Судя по всему, этот блог ушел, но у нас есть WayBack Machine: http://web.archive.org/web/20091103200557/http://www.beacosta.com/blog/?p=52

Я также добавил его в свой блокнот для Evernote: https://www.evernote.com/pub/view/sswrighton/coding/f9786746-94c3-41b5-bcd2-c12992d331a6?locale=en#st=p&n=f9786746-94c3-41b5-bcd2-c12992d331a6

7 голосов
/ 16 июня 2011

Вот мой любимый . Работает без изменения app.config

1 голос
/ 11 июня 2009

Если вы хотите настроить валидацию, вы можете добавить ExceptionValidationRule

http://msdn.microsoft.com/en-us/library/system.windows.controls.exceptionvalidationrule.aspx

0 голосов
/ 26 октября 2013

Я реализовал решение, очень похожее на предложенное Карстеном:

  1. Получил TraceListener, который бросает вместо регистрации
  2. Добавил этого слушателя в PresentationTraceSources.DataBindingSource

Смотрите полное решение на GitHub , оно включает в себя демонстрационное приложение и проект модульного тестирования.

Exception in Visual Studio

0 голосов
/ 11 июня 2009

Включение исключений первого шанса в отладчике (Debug -> Exceptions) также поможет в этом, хотя это может раздражать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...