Click here to Skip to main content
15,881,089 members
Articles / Desktop Programming / WPF

WPF Dynamic TabControl – TabItems

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
16 Sep 2011CPOL 18.1K  
WPF dynamic TabControl - TabItems

What we want to achieve is to dynamically insert TabItems, 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

XML
<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

C#
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 });
     }
   }
}
This article was originally posted at http://blog.kribo.be/blog?p=234

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
Belgium Belgium
Developer within C#, Dynamics NAV (Navision), Php environments.

Comments and Discussions

 
-- There are no messages in this forum --