C # WinForms Model-View-Presenter (Passive View)

Я разрабатываю приложение WinForms на C #. У меня ограниченный опыт программирования графического интерфейса пользователя, и мне приходится многому учиться на лету. При этом вот что я создаю.

См. Общий графический интерфейс пользователя по следующей ссылке:

Графический интерфейс http://img227.imageshack.us/img227/1084/program0.jpg

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

Я много изучал шаблоны проектирования графического интерфейса пользователя и шаблон, который я хочу реализовать. - это пассивный просмотр (см. http://martinfowler.com/eaaDev/PassiveScreen.html ). Мне нужна помощь в том, как собрать все это вместе.

Предпосылки:

1) В зависимости от того, что пользователь нажимает в «TreeView», «Список» в нижнем левом углу отобразится список объектов, которые могут заполнять область «Редактор». Эти объекты могут быть TextBox или DataGridView. Пользователь переключает Список, чтобы выбрать то, что он / она хочет видеть в «Редакторе»

2) Модель по сути представляет собой папку с данными и файлами конфигурации. Существует внешняя программа, которая запускается в заданном каталоге, создает выходные файлы / папки и т. Д. Эта программа, которую я разрабатываю, предназначена для эффективного управления / настройки этих объектов удобным для пользователя способом

3) Проблема с способом Я делал такие вещи, что это практически невозможно протестировать, и, следовательно, переходя к шаблону проектирования пассивного представления MVP

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

Вопросы:

1) Нужно ли мне реализовать один большой интерфейс / представление для всего "внешнего вида" программы, а затем реализовать подчиненные интерфейсы / подчиненные представления для каждого из TreeView, Editor, Logger и т. Д. .? Или есть лучшая «структура» для этого?

2) Когда дело доходит до «передачи» событий из представления докладчику / контроллеру (какую бы терминологию вы ни использовали, WRT шаблон проектирования пассивного представления), что как я должен это делать? Иногда у меня есть простые свойства, которые нужно обновить, а иногда мне нужно выполнить целую серию шагов, чтобы раскрыть их.

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

Заранее спасибо!

Daniel

20
задан SwDevMan81 13 April 2012 в 13:45
поделиться