Вам просто нужно установить свойство Content вашего TabItem на страницу, например:
foreach (var page in pages)
{
TabItem item = new TabItem();
item.Header = page.PageTitle;
item.Content = page;
tcPageControl.Items.Add(item);
}
Вот гораздо более элегантный способ кодирования с использованием LINQ:
tcPageControl.ItemsSource =
from page in pages
select new TabItem
{
Header = page.PageTitle,
Content = page,
};
В общем случае в WPF вам никогда не придется писать цикл «foreach», если вы правильно структурируете свой код.