From your original post, it sounded like you wanted to add the same exact functionality to several different controls. If that was/is the case, then think about it: Its easier to write ONE attached behavior vs a bunch of MyComboBox, a MyButton, a MyCheckBox, etc controls and C&P the code. The behavior you wrote is hard coded to the ComboBox, but it doesn't have to be hard coded to any specific control type, it can be much more generic. Then you can simply attach it to any control you like. Think of something like a tooltip control. By using attached behaviors, you could attach the tooltip to any control you like. In addition, attached behaviors allow you to modify a controls' behavior without re-templating an entire parent control just to change an embedded control type. I.e. say you had a data grid and wanted to change the behavior on a ComboBox deep down in the visual tree. You'd have to re-template the entire data grid just to change a to a . In regards to your last question, there is no need to create a temporary command and use InputBindings. Just subscribe to the KeyDown message and trap the ESC key.