Каковы ваши стратегии использования Expression Blend в сложных, отделенных приложениях WPF?

StackOverflow https://stackoverflow.com/questions/820547

  •  03-07-2019
  •  | 
  •  

Вопрос

Я делал приложения 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 по мере их масштабирования?

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top