What functionality would you need beside Show/Hide? Everything else should be handled by the palette. I use MVVM so functionality is in the ViewModel.
There is no good way to access to the underlying user control exposed functions and properties. For my purposes, this is very important.
I suppose I could hack together dozens of different global objects that represent each user control but I'd still have to handle the paletteset events to figure out which ones I need to work on at any given time.
In a paletteset you can activate a palette only by index ... if you don't know what that is (you can't really know that if your paletteset is created dynamically) then the best option is to activate the palette by name. I can do that now.
In a paletteset you cannot get the active palette. I can do that now.
Oh, and the fact that the palettes really like to maintain focus, despite losing focus on the palette itself, the controls never seem to lose focus. Microsoft says that's because the palette itself is in a different focus set than the paletteset, so technically, if you have 5 palettes in a paletteset, you could have 5 focused controls, and amazingly all or none of them may process user input at any given time. That is what initially prompted me to subclass .. my class forces the control with focus to lose focus when it is deactivated.
I've actually looked at a number of OOB software programs that utilize palettes and what I've found is they all subclass them to add functionality.