.NET GUI

.NET Community für WPF, Silverlight und mehr!
Willkommen bei .NET GUI. Anmeldung | Registrieren | Hilfe | Impressum | Forumsregeln
in Suchen

How To: WPF - Vertikale Tabs bei einem TabControl

Letzter Beitrag 12-03-2008 20:07 von BerndH. 0 Antworten.
Seite 1 von 1 (1 Treffer)
Beiträge sortieren: Zurück Weiter
  • 12-03-2008 20:07

    • BerndH
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 12-03-2008
    • Beiträge 92
    • Punkte 1.620
    • Moderator

    How To: WPF - Vertikale Tabs bei einem TabControl

    Hier wird beschrieben, wie bei einem TabControl die TabItems auf der linken oder rechten Seite platziert werden können.
    Dabei soll auch der Text auf den TabItems vertikal ausgerichtet sein.

    Das WPF TabControl bietet eine Eigenschaft "TabStripPlacement", mit der man an festlegt, wo die Tabs erscheinen sollen. Zur Auswahl stehen "Bottom", "Left", "Right" und "Top". Für dieses Beispiel nehme ich "Left":

    Hinweis: Die Codebeispiele sind so gehalten, dass sie direkt in einem Xaml Editor wie Kaxaml oder XamlPadX ausgeführt werden können.
    <Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
    <TabControl TabStripPlacement="Left">
    <TabItem Header="Langes Tabitem 1"/>
    <TabItem Header="Langes Tabitem 2"/>
    </TabControl>
    </Grid>
    </Page>
    Bisher wird hier der Text der TabItems noch horizontal ausgerichtet. Das Rendering der TabItems kann nun durch ein DataTemplate so angepasst werden, dass der Text um -90° rotiert wird:
    <Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
    <TabControl TabStripPlacement="Left">
    <TabItem Header="Langes Tabitem 1">
    <TabItem.HeaderTemplate>
    <DataTemplate>
    <TextBlock Text="{TemplateBinding Content}">
    <TextBlock.LayoutTransform>
    <RotateTransform Angle="-90"/>
    </TextBlock.LayoutTransform>
    </TextBlock>
    </DataTemplate>
    </TabItem.HeaderTemplate>
    </TabItem>

    <TabItem Header="Langes Tabitem 2">
    <TabItem.HeaderTemplate>
    <DataTemplate>
    <TextBlock Text="{TemplateBinding Content}">
    <TextBlock.LayoutTransform>
    <RotateTransform Angle="-90"/>
    </TextBlock.LayoutTransform>
    </TextBlock>
    </DataTemplate>
    </TabItem.HeaderTemplate>
    </TabItem>
    </TabControl>
    </Grid>
    </Page>
    Das Ganze kann noch in einen Style verpackt werden, um redundanten Code zu vermeiden. So sieht dann das finale Xaml aus:
    <Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Page.Resources>
    <Style TargetType="{x:Type TabItem}">
    <Setter Property="HeaderTemplate">
    <Setter.Value>
    <DataTemplate>
    <TextBlock Text="{TemplateBinding Content}">
    <TextBlock.LayoutTransform>
    <RotateTransform Angle="-90"/>
    </TextBlock.LayoutTransform>
    </TextBlock>
    </DataTemplate>
    </Setter.Value>
    </Setter>
    </Style>
    </Page.Resources>

    <Grid>
    <TabControl TabStripPlacement="Left">
    <TabItem Header="Langes Tabitem 1"/>
    <TabItem Header="Langes Tabitem 2"/>
    </TabControl>
    </Grid>
    </Page>





    Blog: C and it's sharp - http://berndhengelein.de
    Abgelegt unter: , , ,
    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
Seite 1 von 1 (1 Treffer)
Powered by Community Server (Commercial Edition)    69° - Internet-Agentur München (CMS, ASP.NET, Webdesign)