wpf bing выбрасывает аргументнулевое исключение

Как вы справляетесь, когда редактор (xaml/дизайн) в Visual Studio выдает исключение argumentsnullException, «значение не может быть нулевым»?

Я читаю некоторые значения из базы данных, используя структуру сущностей, и сохраняю их в наблюдаемой коллекции, чтобы я мог привязываться к ним из xaml. Логично предположить, что в коллекции может не быть никаких значений, поэтому исключение корректно, верно? Даже если у меня есть значения в базе данных, исключение все равно выдается, потому что редактор (при просмотре в режиме разработки) не запускает приложение для получения значений, что по-прежнему нормально.

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

Я также получаю сообщение об ошибке, используя try catch при чтении из базы данных, но только в редакторе (xaml), а не при запуске приложения, в котором говорится: «Указанное именованное соединение либо не найдено в конфигурации, не предназначено для использования с провайдер EntityClient или недействителен. Трассировка стека приводит меня к самой модели данных сущности. Я использую mysql в качестве бэкэнда. Это окно сообщений с ошибкой выдается каждый раз, когда я что-то набираю (символ) в xaml!

Мои модульные и интеграционные тесты работают нормально.

Блин это нормально?

РЕДАКТИРОВАТЬ: Если я добавлю инициализацию модели представления в ресурсы приложения (в app.xaml.cs, но не в app.xaml), похоже, это сработает. Я не вижу ошибок, когда пишу код на xaml или когда переключаюсь на дизайн, чтобы посмотреть, как он выглядит.


person amb    schedule 06.07.2011    source источник


Ответы (2)


Вы можете спроектировать некоторые образцы данных для режима конструктора, чтобы вы могли видеть конструктор и писать код в XAML без каких-либо исключений конструктора. Для этого может потребоваться использовать класс DesignerProperties ( например DesignerProperties.GetIsInDesignMode(this) и т. д.). Я столкнулся с подобным дизайнером XAML и решил использовать эту технику. Я бы рекомендовал прочитать это руководство для дальнейшей помощи.

person Amit    schedule 06.07.2011
comment
Я думаю, что это решит часть моей проблемы (с исключением ArgumentNullException). Поскольку мой обходной путь сработал, я думаю, что он также решит ошибку от catch, хотя я этого не понимаю. - person amb; 06.07.2011

Можно отлаживать конструктор :-)

Для этого сделайте точку останова в вашей модели (в начале)

теперь в параметрах проекта в разделе «Отладка» выберите «начать с внешней программы» и выберите devenv.exe

теперь, когда вы запускаете свой проект, появится новый экземпляр Visual Studio. Когда вы открываете окно в новом экземпляре Visual Studio, разрыв должен быть выполнен в первом экземпляре Visual Studio.

person Boas Enkler    schedule 06.07.2011
comment
Спасибо, но когда я нахожусь в редакторе, меня все еще беспокоит исключение argumentsnullException в дизайне, а в xaml я вижу окно сообщения из улова. Конечно, если я удалю окно сообщений, я увижу всю трассировку стека в аргументном исключении в дизайне. - person amb; 06.07.2011