What we want to achieve is to dynamically insert TabItem
s, with dynamic header.
Plus at any one time there may only be one TabItem
, so we need to check if the tabControl
contains the tabItem
before creating it.
MainWindow.xaml
<Window x:Class="HomeWork.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:HomeWork.UserControls"
Title="MainWindow"
Height="350"
Width="525">
<DockPanel>
<ListBox DockPanel.Dock="Left"
Margin="5" MinWidth="120">
<ListBoxItem x:Name="A1"
Content="A1" MouseDoubleClick="NewTabItem" />
<ListBoxItem x:Name="A2"
Content="A2" MouseDoubleClick="NewTabItem" />
</ListBox>
<TabControl x:Name="placeholder" Margin="5">
</TabControl>
</DockPanel>
</Window>
MainWindow.cs
public void NewTabItem(object sender, RoutedEventArgs e)
{
ListBoxItem source = sender as ListBoxItem;
if (source != null)
{
bool tabExists = false;
foreach (var tabItem in this.placeholder.Items)
{
if ((tabItem as TabItem).Name == source.Name)
{
tabExists = true;
}
}
if (tabExists == false)
{
this.placeholder.SelectedIndex =
this.placeholder.Items.Add(new TabItem
{ Header = source.Name, Name = source.Name });
}
}
}