Присоединить поведение против маршрутизируемой команды - PullRequest
2 голосов
/ 20 сентября 2010

В чем разница между этими двумя понятиями, я просто так запутался в этих двух понятиях и не могу правильно их применить?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

Прикрепленное поведение - это способ расширения элементов управления без необходимости их подкласса!Примерами этого являются добавление водяных знаков в текстовые поля, принуждение текстовых полей принимать только определенные символы и т. Д. Это типичные вещи, которые вы можете делать с элементом управления, подписываясь на определенные события или устанавливая свойства!Создавая прикрепленное поведение, вы просто инкапсулируете эту функциональность для повторного использования!

Маршрутизированные команды - это способ абстрагировать вашу исполняющую логику для таких действий, как нажатие кнопки ... в WPF, встроенной реализации реализацииICommand, в основном, просматривает визуальное дерево в поисках RoutedCommand, который он может выполнить!Разница между ними также заключается в том, что ICommand действительно может работать только с такими вещами, как кнопки ... Если вам нужно выполнить некоторую логику при нажатии на изображение, вы не сможете без создания прикрепленного поведения!

Также прочтите RelayCommand / DelegateCommand

UPDATE

Присоединение поведения к объекту просто означает, что объект делает что-то, чего он не будет делать самостоятельно,

Джош Смит - http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx

0 голосов
/ 25 июля 2017

В поисках аналогичного вопроса я натолкнулся на главу 6 Руководства PRISM 5.0 , в которой в качестве примечания приводятся элементы управления с поддержкой команд в зависимости от поведения:

Элементы управления WPF, поддерживающие команды, позволяют декларативно подключать элемент управления к команде. Эти элементы управления будут вызывать указанную команду, когда пользователь взаимодействует с элементом управления определенным образом. Например, для элемента управления Button команда будет вызываться, когда пользователь нажимает кнопку. Это событие, связанное с командой, является фиксированным и не может быть изменено.

Поведения также позволяют декларативно подключать элемент управления к команде. Однако поведения могут быть связаны с диапазоном событий, вызванных элементом управления, и их можно использовать для условного вызова связанного объекта команды или метода команды в модели представления. Другими словами, поведение может затрагивать многие из тех же сценариев, что и элементы управления с поддержкой команд, и они могут обеспечивать большую степень гибкости и контроля.

Вам нужно будет выбрать, когда использовать элементы управления с поддержкой команд, а когда использовать поведение, а также какой тип поведения использовать. Если вы предпочитаете использовать один механизм, чтобы связать элементы управления в представлении с функциональными возможностями в модели представления или для согласованности, вы можете рассмотреть возможность использования поведений, даже для элементов управления, которые по своей сути поддерживают команды.

Если вам нужно использовать только элементы управления с поддержкой команд для вызова команд в модели представления, и если вас устраивают события по умолчанию для вызова команды, поведение может не потребоваться. Аналогично, если ваши разработчики или дизайнеры пользовательского интерфейса не будут использовать Blend для Visual Studio 2013, вы можете предпочесть элементы управления с поддержкой команд (или пользовательские присоединенные поведения) из-за дополнительного синтаксиса, необходимого для поведения Blend.

Для меня это единственное лучшее изложение различий между поведением и командами.

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