A window in WPF is always top-level. So there's no exact equivalent of WinForms MDI or WinForms non-top-level forms as a built-in feature in WPF.
Instead, you can create a UserControl and add it to the window programmatically. For example, assuming you have a control called UserControl1
and a TabControl having tabControl1
as its name, then you can handle click event of a button and add an instance of the UserControl1
as content of the tab item:
var page = new UserControl1();
var tabItem = (TabItem)tabControl1.Items[0];
tabItem.Content = page;
Alternatively, you may want to use AvalonDock or one of its forks.