Каковы ваши стратегии использования Expression Blend в сложных, отделенных приложениях WPF? - PullRequest
9 голосов
/ 04 мая 2009

Я делал приложения WPF с шаблоном MVVM, используя Visual Studio, кодируя C # и XAML в основном вручную.

Теперь я освоился с Expression Blend, так что я могу быстро соединять приложения WPF, просто используя графический интерфейс, что очень приятно, гораздо больше контроля над макетом, чем возиться со всеми элементами XAML. 80% ваше время.

Но кажется, что мои приложения в Expression Blend проще и обязательно связаны, используя события, которые обрабатываются в коде и т. Д.

Мне трудно представить, как бы я пошел от этого более простого подхода Expression Blend к отделенному приложению MVVM с представлениями, ViewModels, перенаправленными событиями и командами и т. Д., Кроме как просто перенести весь мой проект в Visual Studio и перегруппировать до такой степени, что я больше не мог редактировать его визуально в Blend, но вернусь к использованию Blend для создания маленьких кусочков XAML, которые я вставлю в Visual Studio.

Для тех из вас, кто работает с более сложными приложениями с помощью Expression Blend, каковы ваши стратегии для того, чтобы ваши проекты были отделены способом MVVM, но в то же время структурированы «способом Expression Blend» (где вы по-прежнему можете просматривать и редактировать целые части приложения так, чтобы это имело смысл визуально), чтобы вы могли продолжать редактировать их в графическом интерфейсе Blend по мере их масштабирования?

Ответы [ 5 ]

7 голосов
/ 04 мая 2009

Я использую Blend прежде всего как инструмент быстрого прототипирования. Для этого мне очень нравится. В частности, я нахожу это очень полезным, когда я не уверен, как настроить все, чтобы получить желаемый макет / поведение.

Я редко редактирую свои основные файлы проекта непосредственно в Blend. Я считаю, что это создает разметку, которая излишне сложна или многословна. Кроме того, по мере знакомства с WPF / XAML я все меньше и меньше использую Blend.

4 голосов
/ 10 мая 2009

Я использую Blend для пользовательского интерфейса своих проектов начиная с версии 1. Поскольку моя цель состоит в том, чтобы полностью интегрировать дизайнера в проект, я пробовал все, что мешает достижению этой цели. Не зная о MVVM в течение некоторого времени, я, естественно, пришел к тому же выводу и делал ViewModels, не зная, что для них существует шаблон. Теперь с помощью других, которые работают над MVVM, все лучше и лучше. Сейчас я разработал 3 приложения с богатым пользовательским интерфейсом и функциональностью, где весь пользовательский интерфейс был сделан в Blend. Прочитайте статью Джоша Смита на MSDN, посмотрите на работу Джейсона Долингера и работу Карла Шиффлетта, чтобы упомянуть лишь некоторые из них.

Посмотрите внимательно на использование ICommand, INotifyPropertyChanged, ObservableCollections.

Также обратите внимание на то, как вы можете манипулировать элементами управления из вашей ViewModel. Как пример, есть ICollectionView. Предположим, у вас есть список животных, и у вас есть набор типов, по которым вы хотите их фильтровать (птицы, млекопитающие и т. Д.)

Используя ICommand и ICollectionView, вы можете предоставить достаточно элементов управления, чтобы дизайнер мог создать список для отображения животных и меню для отображения списка фильтров. В ICollectionView достаточно функциональности, чтобы знать, что такое текущий выбор, и если у вас были команды на основе ICommand для «SortByBird», «SortByMammal» и т. Д., То, когда дизайнер создавал меню, оно (при условии, что контекст окна был вашей ViewModel это окно) предоставит разработчику соответствующие параметры для привязки.

В настоящее время я работаю с другой командой в моей компании, объясняю, как были созданы мои проекты, и они положительно реагируют на новую роль дизайнера, использующего Blend.

2 голосов
/ 04 мая 2009

Смесь отлично подходит для того, чтобы дать вам представление о том, как можно что-то сделать, но xaml, который она делает, ужасен и тесно связан. Когда вы лучше изучите xaml, вы обнаружите, что гораздо проще написать xaml, чем использовать Blend. Пока вы не дойдете до этого момента, вы можете вносить свои изменения в Blend, но затем вам следует провести рефакторинг xaml, который он создает, чтобы сделать его менее тесно связанным, и удалить внешние элементы пользовательского интерфейса.

2 голосов
/ 04 мая 2009

Мне не удалось успешно использовать Blend end to end для этого.

Я нахожу в общем случае, быстрее редактировать xaml вручную в VS (исключение может включать что-нибудь с нестандартными кистями, например). Blend очень доволен кликом, и совсем не быстро его завершить.

Другая область, где Blend действительно полезен, - это создание стилей / шаблонов из существующих элементов управления.

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

0 голосов
/ 05 января 2010

Я немного опоздал на эту вечеринку, но надеюсь, что кто-то еще может ответить. Я еще не нашел результат поиска, который описывает процесс рисования линии между дизайнером и программистом. Первая часть этого - MVVM, так что нет никакой связи между GUI и базовой «бизнес-логикой», и я сейчас усердно работаю над изучением этого. Другая часть, о которой я не видел, чтобы кто-то писал, состоит в следующем: как вы на самом деле собираетесь разрабатывать проект в Blend, чтобы разработчик мог в основном дать вам своего рода GUI DLL, а затем волшебным образом изменится GUI вашего приложения?

Вот то, что я ищу - разработчик пишет свой код как обычно, а также пишет очень простой графический интерфейс, который доказывает, что все работает, как ожидалось. Тем временем дизайнер создает свой крутой маленький графический интерфейс со всеми функциями юзабилити, которые люди привыкли ожидать. Теперь разработчик может запускать свое приложение со своим графическим интерфейсом, но затем также может переключиться на графический интерфейс дизайнера на лету.

Полагаю, если это невозможно сделать на лету, означает ли это, что в идеальном случае разработчик должен иметь свое решение VS, включающее XAML из решения Blend? Тогда в App.xaml просто укажите другой стартовый файл?

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