Связывание WPF и использование пользовательских образцов данных в Visual Designer - PullRequest
0 голосов
/ 21 июля 2010

Краткое изложение 1 предложения: я написал демонстрационное приложение [скачайте src здесь] [1], которое неправильно отображает примеры данных в Visual Studio Designer, и мне нужна помощь.

После 6+ лет разработкив C # и WinForms я решил использовать WPF в моем текущем проекте.Я написал небольшое демонстрационное приложение, чтобы научить себя и экспериментировать с WPF (вы можете увидеть скриншот [здесь] [1]).Приложение просто загружает и отображает последние новости из RSS-ленты новостей Google.

Моя первая попытка этого привела к созданию класса «GoogleNewsWidget».Однако после прочтения модели MVVM я попробовал еще раз и создал «GoogleNewsWidget2», который пытается использовать более ориентированную на MVVM архитектуру.Я не уверен, какая реализация лучше, так как они оба, кажется, в целом работают нормально (и хотя я был бы признателен за комментарии, которые лучше, это не мой основной вопрос).

Моя главная проблема в том, что ни один из них не очень хорошо работает с Visual Studio Designer.GoogleNewsWidget2 прекрасно загружает и отображает данные, когда его xaml открывается напрямую, но не отображается правильно, когда встраивается в другой файл xaml.GoogleNewsWidget не отображает данные в Designer в любом случае.

Любая помощь будет принята.Опять же, источник доступен для скачивания [здесь] [1].

Спасибо,

Джон

[1]: http://abstract.cs.washington.edu/~jfroehli/reflect/ Исходный код демонстрационного приложения

PS В моем исходном сообщении было несколько гиперссылок на снимки экрана, но StackOverflow отклонил его по причинам предотвращения спама.Таким образом, я создал URL [1], который содержит скриншоты и ссылку на исходный код.Если бы кто-то также мог помочь мне понять, как использовать язык «Markdown» для ссылок, я был бы благодарен.:)

1 Ответ

0 голосов
/ 21 июля 2010

Предполагая, что конструктор VS2010 работает так же, как Blend 3, вы должны предоставить «фиктивные» данные - конструктор не будет извлекать данные из внешних источников.

Создать объект, реализующий тот же интерфейсв качестве источника данных (модель представления) и заполните его статическими данными.Убедитесь, что у него есть общедоступный конструктор без аргументов.

Определите его как ресурс в вашем элементе управления, присвоив ему ключ типа «DesignData».

В корневом элементе вашего элемента управления,добавить атрибут d:DataContext={DynamicResource DesignData}"

Это будет использоваться как DataContext только в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...