Ok solved this one by following this tutorial on Struct / detail panel customization here, with that I was able to create a variable to hold the enum value of the Target whenever it was changed in the SetOnPropertyValueChanged event, then in the CustomizeChildren call, I used that enum to perform a switch case and set a TSharedPtr to use whichever struct property I needed based on the enums case.