Hi,@Antonio C . Welcome Microsoft Q&A.
Do you want the following effect? If not, could you show your complete code that reproduces the problem and explain the problem in detail?
<Window.Resources>
<DataTemplate x:Key="Tab1Template">
<Grid>
<Rectangle Fill="AliceBlue"/>
<ContentPresenter Content="{Binding }"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="Tab2Template">
<Grid>
<Rectangle Fill="Pink"/>
<ContentPresenter Content="{Binding}"/>
</Grid>
</DataTemplate>
<local:TabItemTemplateSelector x:Key="TabItemTemplateSelector" Tab1Template="{StaticResource Tab1Template}" Tab2Template="{StaticResource Tab2Template}" />
</Window.Resources>
<Grid>
<TabControl Name="tb" SelectedIndex="0" ItemsSource="{Binding Tabs}" ContentTemplateSelector="{StaticResource TabItemTemplateSelector}" >
</TabControl>
</Grid>
Codebehind:
Public Partial Class MainWindow
Inherits Window
Public Sub New()
InitializeComponent()
DataContext = New MainVM()
End Sub
End Class
Public Class TabItemVM
Public Property Name As String
Public Overrides Function ToString() As String
Return Name
End Function
End Class
Public Class MainVM
Public Property Tabs As ObservableCollection(Of TabItemVM)
Public Sub New()
Tabs = New ObservableCollection(Of TabItemVM)() From {
New TabItemVM() With {
.Name = "Tab1"
},
New TabItemVM() With {
.Name = "Tab2"
}
}
End Sub
End Class
Public Class TabItemTemplateSelector
Inherits DataTemplateSelector
Public Property Tab1Template As DataTemplate
Public Property Tab2Template As DataTemplate
Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
If item Is Nothing Then Return Nothing
Dim tabItem = TryCast(item, TabItemVM)
If tabItem.Name = "Tab1" Then Return Tab1Template
If tabItem.Name = "Tab2" Then Return Tab2Template
Return MyBase.SelectTemplate(item, container)
End Function
End Class
---------------------------------------------------------------------------------
If the response is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.