Laden...

[Solved] Wie erstelle ich ein TabControl mit unterschiedlichen TabItem Styles?

Erstellt von _Cashisclay vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.419 Views
_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 6 Jahren
[Solved] Wie erstelle ich ein TabControl mit unterschiedlichen TabItem Styles?

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

1.040 Beiträge seit 2007
vor 6 Jahren

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?

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 6 Jahren

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

709 Beiträge seit 2008
vor 6 Jahren

Hier machen die das über einen StyleSelector.

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 6 Jahren

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