Как включить ошибки привязки в исключения во время выполнения?

Так же, как в наших проектах есть «предупреждать об ошибках», чтобы ловить ранние возможные проблемы, мне бы хотелось иметь исключение во время выполнения, чтобы поймать их на ранней стадии.

Я недавно был немного обеспокоен этой проблемой, и я был бы рад получить это.

Это можно сделать? И если да, то как?

Вы можете подключиться к коллекции PresentationTraceSources с помощью своего собственного слушателя:

 public class BindingErrorListener : TraceListener { private Action logAction; public static void Listen(Action logAction) { PresentationTraceSources.DataBindingSource.Listeners .Add(new BindingErrorListener() { logAction = logAction }); } public override void Write(string message) { } public override void WriteLine(string message) { logAction(message); } } 

а затем подключить его к коду

 public partial class MainWindow : Window { public MainWindow() { BindingErrorListener.Listen(m => MessageBox.Show(m)); InitializeComponent(); DataContext = new string[] { "hello" }; } } 

Вот XAML с ошибкой привязки

     

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

  1. Выведено TraceListener которое генерирует вместо ведения журнала
  2. Добавлен этот прослушиватель в PresentationTraceSources.DataBindingSource

Посмотрите полное решение на GitHub , оно включает демонстрационное приложение и проект тестирования модhive.

Исключение в Visual Studio

  • Visual Studio отлаживает инструмент «быстрого просмотра» и lambda-выражения
  • Удаленная отладка Java, как она работает технически?
  • Печать коллекций Java Nicely (toString не возвращает довольно вывод)
  • В Visual Studio C ++, каковы представления распределения памяти?
  • NoSuchFieldError Java
  • Почему отлаженная программа так сильно замедляется при использовании отладки ввода метода?
  • Использование трассировки и dbg в Erlang
  • Невозможно установить точку останова Java в Intellij IDEA
  • Как можно захватить трассировку стека в C?
  • Прикрепить отладчик Intellij-IDEA к запущенному Java-процессу
  • Отладчик Android Studio выделяет неправильные строки
  • Interesting Posts

    Почему структуры не поддерживают наследование?

    Как узнать, завершен ли загруженный ISO?

    Статическая функция перегрузки C ++ с нестатической функцией

    как предотвратить добавление NSJSONSerialization дополнительных экранов в URL-адрес

    Почему скорость передачи данных по Fast Ethernet (по 100 Мбит / с, по моему мнению) составляет всего ~ 1,5 Мбайт / с

    Неактивность и активность WPF

    Как attr_accessible используется в Rails 4?

    Официальные причины для «Программного обеспечения прерывания соединения: ошибка записи сокета»

    Как масштабировать BufferedImage

    MongoDB: подсчет количества элементов в массиве

    Как вы создаете сообщения для проверки формы HTML5?

    Ограничьте доступ пользователя к любым программам, кроме одного (выиграть 10)

    Grep не работает в скрипте upstart

    Автоматический выход из сценария оболочки bash при ошибке

    Преобразование Outlook Express csv адресной книги и dbx-файлов в Thunderbird на W7

    Давайте будем гением компьютера.