If you create a button from ActionButtonTemplate, you should call ActionButton_OnLoad(btn) to do the init job, or you should use btn:RegisterForDrag("LeftButton", "RightButton") to make sure the drag & receive working.
For binding, you may try
SetOverrideBindingClick, it won't clear your ADVANCEDLAYOUTBUTTON1ACTION1's key, and you should use UPDATE_BINDINGS event to update those bindings.