Bind a TabControl to a data source
<Window x:Class="TabControlUsingItemTemplate.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:TabControlUsingItemTemplate"
Title="TabControlUsingItemTemplate" Height="300" Width="300">
<Window.Resources>
<ObjectDataProvider x:Key="TabListResource" ObjectType="{x:Type src:TabList}" />
<DataTemplate x:Key="HeaderTemplate">
<TextBlock Text="{Binding Path=Header}" />
</DataTemplate>
<DataTemplate x:Key="ContentTemplate">
<TextBlock Text="{Binding Path=Content}" />
</DataTemplate>
</Window.Resources>
<DockPanel>
<TabControl ItemsSource="{Binding Source={StaticResource TabListResource}}"
ItemTemplate="{StaticResource HeaderTemplate}"
ContentTemplate="{StaticResource ContentTemplate}"/>
</DockPanel>
</Window>
//File:Window.xaml.vb
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Shapes
Imports System.Collections.ObjectModel
Namespace TabControlUsingItemTemplate
Public Partial Class Window1
Inherits System.Windows.Window
Public Sub New()
InitializeComponent()
End Sub
End Class
Public Class TabItemData
Private _header As String
Private _content As String
Public Sub New(header As String, content As String)
_header = header
_content = content
End Sub
Public ReadOnly Property Header() As String
Get
Return _header
End Get
End Property
Public ReadOnly Property Content() As String
Get
Return _content
End Get
End Property
End Class
Public Class TabList
Inherits ObservableCollection(Of TabItemData)
Public Sub New()
MyBase.New()
Add(New TabItemData("Header 1", "Content 1"))
Add(New TabItemData("Header 2", "Content 2"))
Add(New TabItemData("Header 3", "Content 3"))
End Sub
End Class
End Namespace
Related examples in the same category