Почему привязка данных WPF к исключению ласточки?
Недавно я потратил много времени на отладку данных WPF datagrid (из набора инструментов WPF). У меня был столбец, связанный с запросом linq с свойством, которое бросало исключение (в несколько строк). Кажется, что WPF блокирует исключение, и он просто делает ячейки пустыми. Я исправил ошибку, вызывающую исключение, но я хотел бы изменить поведение WPF. Я всегда хочу знать, что-то не так. Почему происходит проглатывание исключения по умолчанию и как его изменить?
- WPF привязка данных к интерфейсу, а не к фактическому объекту - возможность литья?
- Привязать к методу в WPF?
- Есть ли способ определить, где объявляется / создается привязка WPF?
- WPF перед записью
- Что означает «{Binding Path =.}» В привязке WPF?
- Как я могу привязать данные строк к ListBox в WPF / WP7?
- Image UriSource и привязка данных
- Перетаскивание из источника данных в окно WPF не работает
Ошибки привязки данных проглатываются изначально, но они отображаются в диалоговом окне OUTPUT в интерфейсе визуальной студии. Если вы хотите получать уведомления (и иметь как можно больше контроля над ним), вы можете использовать источники трассировки.
Bea Stollnitz предлагает отличную запись об этом (и debuginng привязки в целом) здесь: http://www.beacosta.com/blog/?p=52
По-видимому, этот блог ушел, но у нас есть 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
Вот мой любимый . Он работает без изменения app.config
Если вы хотите установить для него валидацию, вы можете добавить ExceptionValidationRule
http://msdn.microsoft.com/en-us/library/system.windows.controls.exceptionvalidationrule.aspx
Я внедрил решение, очень похожее на решение, предложенное Карстеном:
- Выведено
TraceListener
которое генерирует вместо ведения журнала - Добавлен этот прослушиватель в
PresentationTraceSources.DataBindingSource
Посмотрите полное решение на GitHub , оно включает демонстрационное приложение и проект тестирования модhive.
Включение справки с первым шансом в отладчике (Debug -> Exceptions) также поможет в этом, хотя это может раздражать