Может ли кто-нибудь сказать мне, в чем преимущества использования Commands vs Events в WPF. Влияют ли команды или события на утечки памяти? Какой самый быстрый подход. Каковы их недостатки.
Команды WPF против событий Преимущества/Недостатки
Ответ 1
Команды предоставляют два основных преимущества для обработчиков событий:
- Команды
- не связаны с вызывающий, так что одна и та же команда не зависимый и может быть вызван из пункт меню, кнопка панели инструментов, клавиатура, и т.д. Команды
- обеспечивают поддержку включение/отключение всех связанных пользовательских интерфейсов контроля, основанного на статусе команда (может быть выполнена или нет)
Я бы предпочел использовать команды в реальном проекте, особенно если вы хотите использовать M-V-VM.
Я не слышал об утечках памяти, связанных с командами.
События, вероятно, быстрее, но разница не должна быть значительной - я использую команды для своих проектов в течение 2 лет и не имел проблем с производительностью.
Подробнее о командах см. Командный обзор (archive) (v4)
Ответ 2
Но хотя команды и события могут перекрываться, это две разные вещи. Команды говорят "сделай это!", В то время как события говорят "это только что произошло!". Таким образом, у вас может быть CloseWindowCommand для закрытия окна, но в окне может быть ClosingEvent, который сообщает подписывающим объектам, которые закрываются.
Ответ 3
Команды - это более стандартный способ интеграции событий. это может быть более полезным, чем события, потому что с их помощью вы можете определить одну задачу (команду) и использовать ее из разных мест. например, вы можете определить команду сохранения и использовать элемент меню, элемент контекстного меню и кнопку, чтобы использовать его одновременно. таким образом вы можете центрировать задачи. также команды поддерживают привязку данных, которая является очень мощной функцией приложения WPF. насколько я знаю, команды приводят к определенным утечкам памяти, но вы можете избежать этого, используя множество способов работы. Я должен добавить, что шаблон проектирования MVVM также использует команды как стандартный способ разработки приложения WPF. работа с событиями намного проще, но команды обеспечивают очень мощный дизайн. но теперь вы должны не всегда использовать команды вместо событий. там много мест, где вы можете использовать только события.
Ответ 4
Кроме того, WPF4.0 позволяет привязывать к определениям команд. Это упрощает вывод команд из ваших моделей просмотра, что позволяет вам отделить логику от проблем пользовательского интерфейса.
Ответ 5
Команды являются маршрутизируемыми событиями.