Дизайнер WPF не будет загружаться с платформой сущностей - PullRequest
1 голос
/ 18 января 2009

У меня были реальные проблемы с тем, чтобы заставить дизайнера WPF работать в VS 2008, когда я использую структуру сущностей. У меня есть пользовательский элемент управления, который получает данные из модели объекта. Конструктор пользовательских элементов управления загружается нормально, но главное окно выдает следующую ошибку «Не удалось создать экземпляр типа« CampaignList ». Когда я компилирую проект, проблем нет.

Я начал использовать обходной путь, при котором я определяю, когда он находится в режиме разработки, и не создаю объект «Сущности» в режиме разработки. Однако это выглядит как некрасивый взлом. Есть ли лучший способ сделать это, или нам просто нужно дождаться обновления VS?

Ответы [ 3 ]

1 голос
/ 18 января 2009

Это именно то, что вам нужно сделать. Это может показаться уродливым хаком, черт возьми, это может быть даже уродливым хаком, но именно так фреймворк обрабатывает визуализацию во время разработки. Почти каждый стандартный элемент управления каркасом (формы, wpf и веб) определяет, отображается ли он во время выполнения или во время разработки, и ведет себя по-разному. Это основная идея компонентного дизайна . Ваши классы существуют в двух разных средах - среде выполнения и среде разработки, и они должны предлагать богатый и удобный пользовательский опыт в обоих. И единственный способ сделать это для автора элемента управления - написать код для этого элемента управления.

Оптимально, вы захотите справиться с этой ситуацией как можно выше в стеке. Совершенно определенно вы захотите определить, находитесь ли вы во время разработки в вашем пользовательском элементе управления и заменить фиктивный источник данных для структуры сущностей. Вы будете отображать ложные данные, которые вы видите в некоторых формах с привязкой к данным и в элементах управления wpf.

Так все и сделано. VS никогда не будет "обновляться", так как он работает ... хорошо, разработан.

0 голосов
/ 18 мая 2009

Проблема может заключаться в том, что класс (или базовый класс) определяется как абстрактный. Это приводит к сбою конструктора. Эта проблема более подробно описана в разделе комментариев блога Лорана Бюньона: http://geekswithblogs.net/lbugnion/archive/2007/03/02/107747.aspx

0 голосов
/ 21 января 2009

Вы пытаетесь загрузить свои данные в конструктор вашего пользовательского элемента управления? Если да, то вам нужно будет проверить «Режим проектирования». Если вы поместите нагрузку в какую-то другую методологию (например, в специальный метод «Load», который вы вызываете в другом месте кода), конструктор может быть намного более дружелюбным.

В качестве альтернативы, если вы используете конструктор с параметрами, вы можете создать конструктор по умолчанию (без параметров) для пользовательского элемента управления, который работает намного удобнее для вашего конструктора, не вызывая там методы загрузки.

...