Подтвердить что ты не робот

Команды WPF против событий Преимущества/Недостатки

Может ли кто-нибудь сказать мне, в чем преимущества использования Commands vs Events в WPF. Влияют ли команды или события на утечки памяти? Какой самый быстрый подход. Каковы их недостатки.

4b9b3361

Ответ 1

Команды предоставляют два основных преимущества для обработчиков событий:

  • Команды
  • не связаны с вызывающий, так что одна и та же команда не зависимый и может быть вызван из пункт меню, кнопка панели инструментов, клавиатура, и т.д. Команды
  • обеспечивают поддержку включение/отключение всех связанных пользовательских интерфейсов контроля, основанного на статусе команда (может быть выполнена или нет)

Я бы предпочел использовать команды в реальном проекте, особенно если вы хотите использовать M-V-VM.

Я не слышал об утечках памяти, связанных с командами.

События, вероятно, быстрее, но разница не должна быть значительной - я использую команды для своих проектов в течение 2 лет и не имел проблем с производительностью.

Подробнее о командах см. Командный обзор (archive) (v4)

Ответ 2

Но хотя команды и события могут перекрываться, это две разные вещи. Команды говорят "сделай это!", В то время как события говорят "это только что произошло!". Таким образом, у вас может быть CloseWindowCommand для закрытия окна, но в окне может быть ClosingEvent, который сообщает подписывающим объектам, которые закрываются.

Ответ 3

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

Ответ 4

Кроме того, WPF4.0 позволяет привязывать к определениям команд. Это упрощает вывод команд из ваших моделей просмотра, что позволяет вам отделить логику от проблем пользовательского интерфейса.

Ответ 5

Команды являются маршрутизируемыми событиями.