I got similar problem and I solve it by add a condition (Not OnPlayerPickupItem…IsBound()).
//if PC and if button is NOT bound before
if (PC && !PC->OnPlayerPickupItem.IsBound())
{
// Calls CallPlayerPickupItem() that in turn calls the "BlueprintImplementableEvent" on OnPlayerPickedItem()
PC->OnPlayerPickupItem.AddDynamic(this, &UInventoryUserWidget::CallPlayerPickupItem);
}