Как правильно убрать зависимость от порядка и избыточность при объединении событий? - PullRequest
3 голосов
/ 25 августа 2011

Скажем, у вас есть диалоговое окно с 3 полями.

  • Случай 1. Ввод поля 1 будет полем по умолчанию 2 и полем 3 (eventHandler1)
  • Случай 2. Ввод поля 2 будетполе по умолчанию 3 (eventHandler2)
  • Случай 3. Ввод поля 3 ничего не делает по умолчанию.

С этим связаны две проблемы:

  1. Избыточность: без дополнительных усилий, eventHandler1 неявно запускает eventHandler2.В этом примере с игрушкой это не проблема.Но расширите сценарий до большего количества полей и без заботы, издержки могут стать огромными.

  2. Зависимость от порядка: я думаю, что поле 3 будет по умолчанию с eventHandler2.Но в любом случае;иногда, eventHandler1 по умолчанию может быть правильным.В других случаях значение по умолчанию для eventHandler2 может быть правильным.

Существует ли чистый, структурированный способ обработки этого в C # без необходимости иметь дело с огромным количеством состояний?

1 Ответ

2 голосов
/ 25 августа 2011

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

Класс View (подобный представлению) будет контейнером для вашего первого класса и будет обрабатывать входные события, вызывая методы из второго класса для обработки результатов. Наконец, он обновит другие поля, когда ему будет приказано сделать это из другого класса.

Старый, неправильный ответ здесь (Не поймал тег Winforms, глупый я

Самый простой ответ - это разделение View-Model и View, но без примера кода трудно определить, подходит ли MVVM.

Таким образом, ваш View xaml будет иметь определения для трех (четыре, десять, в любом случае), каждая привязка данных к свойству в вашей ViewModel.

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

Гораздо меньше в сочетании; гораздо более структурированный.

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