Как вы реализуете сложную логику пользовательского интерфейса? - PullRequest
5 голосов
/ 21 июля 2011

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

У меня есть несколько элементов управления в моей форме, есть списки, кнопки, таблицы и древовидная структура. Итак, идея заключается в том, что в зависимости от «контекста» некоторые элементы управления включаются, а другие отключаются. Некоторые из них могут предоставить некоторые функции на данный момент, а другие нет.

В настоящее время это реализовано "как есть". Я обрабатываю события, проверяю изменения (выбран новый узел дерева, выбрана пара узлов и т. Д.), А затем решаю, нужно ли отключить или включить некоторые элементы управления. Мне не очень нравится этот подход, потому что код формы выглядит сложным. И если мне нужно добавить больше логики, это становится еще сложнее. Я действительно обеспокоен, так как мы довольно проворны, и новые функции или множество изменений являются ежедневной нормой.

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

Не очень хочется изобретать что-то новое и пытаться найти какие-нибудь хорошие идеи, которые широко используются. Пожалуйста, не рекомендуйте подход с одним методом UpdateUI (), я думаю, что это ничего не изменит в долгосрочной перспективе.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 21 июля 2011

Эта серия блогов может быть тем, что вы ищете:

http://codebetter.com/jeremymiller/2007/07/26/the-build-your-own-cab-series-table-of-contents/

(может показаться большим количеством материала, но начните с «Диалога смирения», основанного на замечательной статье Майкла Перса ). Это все о том, «как отделить вашу логику от кода UI», что может решить большинство ваших проблем.

2 голосов
/ 21 июля 2011

Связывание данных пользовательского интерфейса и инкапсуляция вашей бизнес-логики в бизнес-объекты - вот путь. CSLA.NET Framework от Rocky Lhotka имеет множество встроенных замечательных функций, а также ряд примеров приложений.Я использовал его в проекте WPF среднего размера и в огромном приложении WinForms / CAB и действительно наслаждался им.

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