Я разрабатываю приложение WinForms на C#. У меня ограниченный опыт программирования GUI, и мне приходится многому научиться на лету. Вот что я здесь создаю.C# WinForms Model-View-Presenter (пассивный просмотр)
Посмотреть общий вид графического интерфейса пользователя по следующей ссылке:
GUI http://img227.imageshack.us/img227/1084/program0.jpg
Теперь, я сделал много работы, уже, но в очень плохом автономном шаблоне дизайна. Я не знал, что проект когда-либо достигнет определенного размера, и, таким образом, пришло время сделать большой рефакторинг.
Я много изучал шаблоны графического интерфейса GUI, и модель, которую я желаю реализовать, - это пассивный вид (см. http://martinfowler.com/eaaDev/PassiveScreen.html). Я ищу некоторую помощь о том, как собрать все это вместе.
фона:
1) В зависимости от того, что пользователь нажимает на «TreeView», то «Список» в левом нижнем углу отображается список объектов, которые могут заселяют «Редактор» область. Эти объекты могут быть TextBox или DataGridView. Пользователь переключает список, чтобы выбрать то, что он хочет видеть в «Редакторе»
2) Модель представляет собой папку с данными и конфигурационными файлами. Существует внешняя программа, которая работает в заданном каталоге, создает выходные файлы/папки и т. Д. Эта программа, которую я разрабатываю, предназначена для эффективного управления/настройки этих объектов по-дружески.
3) Проблема с Кстати, я делаю то, что почти невозможно проверить, и, следовательно, переход к шаблону проектирования пассивного представления MVP-esque
Я пытаюсь сделать так, чтобы программа работала независимо от представления. Я не смог найти примеров, когда более сложное интерактивное представление используется с пассивным представлением.
Вопросы:
1) Нужно ли мне реализовать один большой интерфейс/вид на весь «смотреть» программы, а затем реализовать суб-интерфейсов/суб-просмотры для каждого из TreeView, редактор, Logger , и т.д.? Или есть лучшая «структура» для этого?
2) Когда дело доходит до «раздачи» событий от представления к презентатору/контроллеру (независимо от того, какую терминологию вы хотите использовать W.R.T. шаблон пассивного представления), каким образом я должен это делать? Иногда у меня есть простые свойства, которые необходимо обновить, а иногда мне нужна целая серия шагов для разворачивания.
Мне понравились бы предложения и советы по этой теме. Я просмотрел Интернет, и я не нашел адекватных примеров, чтобы помочь мне продолжить этот проект.
Заранее благодарен!
Daniel
Я ценю информативный ответ, но он особенно касается моих вопросов. Должен ли я использовать один вид (с этими 4-5 подкомпонентами, с которыми пользователь может взаимодействовать), или должны быть Представления в Представлениях (следовательно, интерфейсы в интерфейсах)? Кроме того, я до сих пор не уверен в «передаче» событий от представления к докладчику, и мне все еще нужно разъяснить, как View наблюдает за моделью. Меня тоже беспокоит «структура» программы. – 2010-11-30 21:43:26
Я предпочитаю разбивать его на более мелкие компоненты, особенно если вы хотите поощрять повторное использование.Создавайте представления с единственной целью, но их можно использовать вместе для создания составного UI. – 2010-11-30 21:51:18