I'll explain in short
what I did:
I've added two classes: NormalUserControl and SearchUserControl derived from UserControl with some adjustments (Title, DialogResult, etc..)
In NavigationManager I have duplicated "Explore", "Navigate", "Search" with "ExploreUserControl" etc.
To do this I introduce some variables: TaskSearchUserControl, TaskNormalUserControl.
A trick: to allow close correctly, tho delegates:
public Action<BaseUserControl> UserControlLoad;
public Action<object, EventArgs> UserControlClose;
An example: in SearchUSerControl method, finally I call:
SearchUserControl sw = CreateSearchUserControl(options);
if (options.Closed != null)
sw.Closed += options.Closed;
if (UserControlClose != null)
sw.Closed += new EventHandler(UserControlClose);
if (UserControlLoad != null)
Finally in my startup window
Navigator.Manager.UserControlLoad = MyApplication.Instance().OpenTab;
Navigator.Manager.UserControlClose = MyApplication.Instance().CloseTab;
that's all in short, but obviously the real work
was much more difficult.