Servus,
hat jemand von euch sich schon einmal ein TabControl erstellt, was unterschiedliche TabItem Styles beinhaltet?
Ich möchte gerne das mein erstes TabItem und mein letztes Tabitem sich von den normalen Tabitems unterscheiden.
Hab schon etwas gefunden, wo man via Converter rausfinden muss welches Tabitem es denn ist um dann eventuell einen anderen Style zu hinterlegen?
Wenn jemand schon Erfahrungen sammeln könnte, wäre es nett, falls er sie teilen würde 😃
Edit : Gerade auf den itemContainerStyleSelector gestoßen, sollte jemand trotzdem schon Erfahrungen haben, gerne trotzdem teilen, ich probier es mal damit
Grüße
Also prinzipiell kann man den TabItems natürlich verschiedene Styles zuweisen.
<TabControl>
<TabItem Header="Tabitem Nr. 1">
<TabItem.Style>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Background" Value="Aqua" />
</Style>
</TabItem.Style>
</TabItem>
<TabItem Header="Tabitem Nr. 2" />
<TabItem Header="Tabitem Nr. 3">
<TabItem.Style>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Background" Value="IndianRed" />
</Style>
</TabItem.Style>
</TabItem>
</TabControl>
Scheitert es daran, den ersten und letzten Tab zu ermitteln?
Servus,
ich wollte das ganze dynamische gestalten, ich dachte ich könnte dem ItemContainerStyle
einen Style zuweisen der in sich ermittelt welches das erste TabItem ist und dem einen Style zuweisen würde, das letzte Tabitem ermittelt diesem einem Style zuweist und dann Defaultmäßig jedes dazwischen einen Style zuweist.
Kann man nachvollziehen was ich meine?
Grüße
Servus,
danke für eure beiden Antworten, die haben mir sehr geholfen.
Hier mein Style Selector :
Public Class TabItemContainerStyleSelector
Inherits StyleSelector
#Region "Properties"
Public Property First_TabItem_Style As Style
Public Property Default_TabItem_Style As Style
Public Property Last_TabItem_Style As Style
#End Region
#Region "Funktionen"
Public Overrides Function SelectStyle(item As Object, container As System.Windows.DependencyObject) As System.Windows.Style
' --- interne Variablen Deklaration --- '
Dim TabItem As TabItem = item
Dim TabControl As TabControl = TabItem.Parent
Try
Select Case ItemsControl.ItemsControlFromItemContainer(TabItem).ItemContainerGenerator.IndexFromContainer(TabItem) + 1
Case 1
Return First_TabItem_Style
Case TabControl.Items.Count
Return Last_TabItem_Style
Case Else
Return Default_TabItem_Style
End Select
Catch ex As Exception
End Try
Return Default_TabItem_Style
End Function
#End Region