заявка
Это приложение WPF, предназначенное для отправки файлов между клиентами. Я работаю над пользовательским элементом управления, предназначенным для отображения списка отправленных файлов, их получателей и т. Д.
Настраивать
Я пытаюсь стилизовать элемент управления, но мне нужны образцы данных для его заполнения. Следуя этим инструкциям, я создаю SampleFilesSource.cs
, расширяющий DataSourceProvider
. Он генерирует экземпляр модели представления, заполненный ObservableCollection
случайными недавними файлами.
Затем в представлении я установил время разработки DataContext
следующим образом:
<d:UserControl.DataContext>
<sample:SampleFilesSource/>
</d:UserControl.DataContext>
Но ничего не появляется ... Что случилось?
Исключение, связанное с данными
Ну что ж, посмотрим. Панель «Данные» в Blend позволяет нам видеть, что во время разработки DataContext
доступно для привязки. Давайте взглянем.
Что ж, интересно. В моем DataContext
есть исключение. Панель данных не показывает вам никаких значений, только то, к каким полям можно привязать. Итак, как мне получить представление об исключении Message
? Могу я привязать к нему?
Привязка к нему
К сожалению, нет ... Фактически, единственная привязка, которую я могу получить для вывода любого текста, - это "(Коллекция)", когда я пытаюсь {Binding Data.RecentFiles}
. Поля видны под объектом Data
, но ничего не имеет значений.
Но что, если я установлю время выполнения DataContext
на генератор данных образца? Просто удалите этот маленький d:
из тега DataContext
и отлаживайте ... Все равно не повезло. Взглянув на живое визуальное дерево, я вижу, что DataContext
привязан к экземпляру модели представления. И что интересно, на этот раз в тексте данных есть только поле Error
.
Во время выполнения нет поля Data
, а поле Error
является экземпляром Exception
. Я думаю, что это пусто. В обозревателе свойств есть только пустое поле, без каких-либо параметров для его просмотра. Мне кажется странным, что в сеансе отладки не обнаружено необработанных исключений. Он как-то застрял в DataContext
?
Отладка
Итак, кроме очистки, перестройки, перезапуска VS, перезагрузки компьютера и всего, что я уже пробовал, что еще я могу сделать, чтобы взглянуть на это Message
? Вот удобное небольшое руководство по подключению отладчика к процессу разработки Visual Studio. Довольно круто!
Из отладчика я могу узнать только пару вещей:
- Моя модель просмотра, созданная моим
DataSourceProvider
, действительна, выглядит хорошо, никаких исключений не возникает. - Поле
Error
моегоDataSourceProvider
равно нулю, когда оно покидает мой код.
Итак, все, что я могу сказать, это исключение возникает после того, как я вызвал DataSourceProvider.FinishQuery
, и до того, как дизайнер получит в руки сгенерированный DataContext
.
Выводы
Я в тупике. Любые идеи?
Обновлять
Я создал минимальный пример, чтобы поделиться, и, конечно же, исключение действительно отображается на панели «Данные» в наложении выражений. Однако я действительно могу привязаться к сгенерированным образцам данных в примере, поэтому теперь я думаю, что исключение было отвлекающим маневром, и моя проблема в другом месте. Я даже не уверен, есть ли исключение, а панель данных просто показывает, что она делает, потому что там МОЖЕТ быть исключение.
Вот пример, если кто-то еще хочет посмотреть.