2016-09-18 3 views
4

Когда следует использовать Command и когда использовать событие Click?Разница между командами (ICommand) и событие Click

F.e. если у меня есть Button в моем приложении UWP, что я должен использовать?

+3

команда переплетена с ViewModel, в то время как событие нажатия записываются в коде –

+5

Другой бонус с командой, что он имеет CanExecute так что ваш UI может серым цвет кнопку, когда ее не удается выполнить действие. Для лучшей практики вы должны использовать интерфейс ICommand, что делает ваш код намного чище и проще в обслуживании в долгосрочной перспективе, но если у вас будет только одна кнопка для простого приложения, тогда нет реальной проблемы при использовании события click. – mbrdev

+2

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

ответ

7

Когда я должен использовать команду и когда использовать событие Click?

Твое широкий вопрос, и я бы просто ответить: «Это зависит». Потому что:

  • Command реализует интерфейс ICommand, и это означает, что больше кода, чтобы добавить к вашему приложению, но обычно это не изменится. Вместо этого обработчик события не требует реализации интерфейса.
  • Для каждой команды, которую вы хотите, вы должны предоставить код, который будет обрабатывать логику щелчка и логику CanExecute, сказать, когда команда может выполнить. Это не запрашивается у простого обработчика событий (например, MyButton_Click). Это означает, что с помощью Command у вас будет больше контроля над элементами вашего пользовательского интерфейса (кнопка ничего не выполнит, если CanExecute - false).
  • Если вы хотите добавить Command, вы будете связывать его к DataContextViewModel, если вы реализуете шаблон MVVM). Вместо этого, когда вы добавляете простой обработчик событий (например, MyButton_Click), код будет помещен в ваш код, который является логикой вашего основного окна. Это означает, что реализация Command, по моему мнению, у вас будет все, что вам нужно изменить только в одном месте (ViewModel) вместо разбросанной логики в любом месте вашего проекта.

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

+1

приятный ответ простыми словами –