У меня проблема с привязкой данных к классу обслуживания в WPF. Мой класс обслуживания имеет статический конструктор, который считывает информацию о конфигурации и извлекает некоторую необходимую информацию. Проблема заключается в том, что во время проектирования я получаю сообщение об ошибке: инициализатор типа для Mytype выдал исключение. Я считаю, что это потому, что информация о конфигурации не присутствует в конфигурации Visual Studio. Когда я запускаю приложение, все работает нормально, но я не могу ничего спроектировать из-за этой ошибки.
Я бы предположил, что дизайн вернется к некоторому отображению по умолчанию, если не сможет добраться до моего объекта привязки данных. По-видимому, это не так и убивает всего дизайнера. Есть ли обходной путь для этой проблемы, например, отключение динамического отображения элементов управления с привязкой к данным. Это очень расстраивает и разочаровывает. Я использую Visual Studio 2008 SP1.
Вот фрагмент кода привязки данных в моей сетке.
<ObjectDataProvider ObjectType="{x:Type local:DataService}" x:Key="dataProvider"
MethodName="GetCollection" >
<ObjectDataProvider.MethodParameters>
<s:Int32>1</s:Int32>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
По сути, класс DataService не может создавать себя, если у него нет информации о конфигурации. Я пытался создать обходной путь для моего конкретного случая, когда статический конструктор создает конкретную реализацию хранилища данных. Однако я не могу сделать это напрямую, так как это создаст круговую ссылку в моем проекте. Я попытался унаследовать класс и перехватить все исключения в статическом конструкторе родительского класса. Это все еще не работает. Любые другие идеи об обходных путях или журнал ошибок, который показывает более подробную информацию о том, какое исключение было выброшено.
Я пытался разобрать все, чтобы найти наименьший общий знаменатель. Я удалил статический конструктор и в основном возвратил голые предметы первой необходимости. Я обнаружил, что все, что извлекало данные из базы данных, не отображалось. Если я возвращаю статический список, все в порядке. Я использую блок доступа к данным корпоративной библиотеки Microsoft. Опять же, приложение работает нормально при запуске. Я предполагаю, что он не может найти необходимую информацию о соединении с базой данных, но почему это может быть проблемой? Microsoft должна была предположить, что это произойдет, когда они построят VS2008. Я что-то не так делаю?