WPF Commands vs Events Преимущества / Недостатки - PullRequest
45 голосов
/ 02 июня 2010

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

Ответы [ 5 ]

38 голосов
/ 02 июня 2010

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

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

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

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

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

Подробнее о командах см. Обзор команд ( архив ) ( v4 )

30 голосов
/ 24 ноября 2010

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

3 голосов
/ 02 июня 2010

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

0 голосов
/ 17 августа 2010

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

0 голосов
/ 02 июня 2010

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

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