Каждая кнопа на ленте привязана только к одной команде
Вопрос: Я бы хотел реализовать только одну внешнюю команду и вызывать ее при нажатии любой из кнопок, которые я создал в своем приложении. Все дело в том, что я хочу уменьшить количество кнопок на ленте, так как некоторые из них должны быть активны только в определенный момент. Как в методе Execute я могу определить какая именно кнопка была нажата, чтобы выполнить соответствующие действия? Например, можно ли определить название кнопки, на которую нажал пользователь?
Ответ: Revit API не поддерживает подобного механизма. Я вам тоже не подскажу такого способа.
Все же наилучший вариант – создать отдельную команду для каждой кнопки.
Однако, если же вам так хочется сделать именно так, как вы описываете, то можно создать один обработчик для всех ваших команд и назначить его на несколько кнопок с передачей дополнительного параметра, определяющего какая кнопка была нажата.
Для более подробного описания реализации смотрите пост реализация одной команды для нескольких кнопок.
Примечание. В посте говорится о необходимости использования UIElementActivated для определения какая кнопка была нажата.
Дополнение от Guy Robinson. Почему бы просто сделать кнопку неактивной или вообще ее прятать? Такое поведение можно реализовать с помощью Revit API.
Источник: http://thebuildingcoder.typepad.com/blog/2014/07/upgrading-family-files-silently-part-2.html#3
Обсуждение: http://adn-cis.org/forum/index.php?topic=922
Опубликовано 18.08.2014