1 is a decent way to accomplish this. The library has an internal method, DockHelper.IsDockStateAutoHide()
that does basically the same thing. This should actually be made into a public extension method and included as part of the library.
2 Your solution is good.
3 & 4 would probably be best implemented as a new event in the DockPanel
: ActiveAutoHideContentChanged
. You could then track the last autohide content on your own and when the event is raised you know that #3 is occurring if the new value is not null and #4 is occurring if the last known value was not null.
Feel free to open a request on GitHub to have the event added.