Как отмечено в другом ответе, вероятно, есть много способов сделать это, но вот мой простой способ:
Определите шаблон данных, который определяет содержимое каждой вашей идентичной вкладки.Элементы управления в шаблоне данных будут привязаны к модели представления текущей выбранной вкладки.В моем примере я поместил один TextBlock, но вы можете легко расширить его.
, используя этот Xaml:
<Page.DataContext>
<Samples:TabBindingViewModels />
</Page.DataContext>
<Grid>
<Grid.Resources>
<DataTemplate x:Key="ContentTemplate"
DataType="{x:Type Samples:TabBindingViewModel}">
<TextBlock Text="{Binding Content}"/>
</DataTemplate>
</Grid.Resources>
<TabControl ContentTemplate="{StaticResource ContentTemplate}"
DisplayMemberPath="Header" ItemsSource="{Binding Items}" />
</Grid>
и код этой модели представления:
public class TabBindingViewModels
{
public TabBindingViewModels()
{
Items = new ObservableCollection<TabBindingViewModel>
{
new TabBindingViewModel(1),
new TabBindingViewModel(2),
new TabBindingViewModel(3),
};
}
public IEnumerable<TabBindingViewModel> Items { get; private set; }
}
public class TabBindingViewModel
{
public TabBindingViewModel() : this(0)
{
}
public TabBindingViewModel(int n)
{
Header = "I'm the header: " + n.ToString(CultureInfo.InvariantCulture);
Content = "I'm the content: " + n.ToString(CultureInfo.InvariantCulture);
}
public string Header { get; set; }
public string Content { get; set; }
}
мы получаем:

Мне очень нравится учебник по стилизации вкладки.Вы можете легко поместить более сложный контент в заголовки вкладок, а также в контент.
Вы должны изучить полный шаблон элемента управления вкладками, чтобы понять, как он работает.Используйте Blend или VS11 beta для извлечения шаблона.
Для того, чтобы динамически добавлять / удалять вкладки, теперь все, что вам нужно сделать, это добавить / удалить элементы в ObservableCollection моделей представления.