Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TabControlEx: TabStripPlacement issues #174

Closed
imonikov opened this issue Mar 9, 2023 · 3 comments
Closed

TabControlEx: TabStripPlacement issues #174

imonikov opened this issue Mar 9, 2023 · 3 comments
Assignees
Labels
Milestone

Comments

@imonikov
Copy link

imonikov commented Mar 9, 2023

Describe the bug

It looks like TabControlEx works properly only with default TabStripPlacement="Top" property. Try to change it to Left, Right, Bottom and see the issue - template parts are located incorrectly.

Steps to reproduce

Set TabStripPlacement Left, Right or Bottom and see the result.

<controlz:TabControlEx TabStripPlacement="Left">
    <TabItem Header="Lorem">
        <TextBlock Text="Lorem ipsum dolor sit amet, consetetur sadipscing"
                   HorizontalAlignment="Center"
                   FontSize="30" />
    </TabItem>
    <TabItem Header="ipsum">
        <TextBox Text="Lorem ipsum dolor sit amet, consetetur sadipscing"
                 HorizontalAlignment="Center"
                 Margin="5" />
    </TabItem>
</controlz:TabControlEx>

Workaround

Set style from Tabcontrol directly:
<controlzex:TabControlEx Style="{StaticResource {x:Type TabControl}}" TabStripPlacement="Left">

Expected behavior

TabStripPlacement="Left":
LeftEx

Actual behavior

TabStripPlacement="Left":
Left

Environment

ControlzEx version=5.0.2
Windows build number: Win10 22H2
Visual Studio: 2017 15.9.51
Target Framework: net472

Screenshots

TabStripPlacement="Bottom":
Bottom

@imonikov imonikov added the Bug label Mar 9, 2023
@imonikov
Copy link
Author

imonikov commented Mar 9, 2023

I believe <ControlTemplate.Triggers> section should be changed from:

        <ControlTemplate.Triggers>
            <Trigger Property="TabStripPlacement" Value="Bottom">
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="1" />
                <Setter TargetName="PART_ItemsHolder" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_ItemsHolder" Property="Margin" Value="2 0 2 2" />
                <Setter TargetName="RowDefinition0" Property="Height" Value="*" />
                <Setter TargetName="RowDefinition1" Property="Height" Value="Auto" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Left">
                <Setter TargetName="ColumnDefinition0" Property="Width" Value="Auto" />
                <Setter TargetName="ColumnDefinition1" Property="Width" Value="*" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Column" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Margin" Value="2 2 0 2" />
                <Setter TargetName="PART_ItemsHolder" Property="Grid.Column" Value="1" />
                <Setter TargetName="RowDefinition0" Property="Height" Value="*" />
                <Setter TargetName="RowDefinition1" Property="Height" Value="0" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Right">
                <Setter TargetName="ColumnDefinition0" Property="Width" Value="*" />
                <Setter TargetName="ColumnDefinition1" Property="Width" Value="Auto" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Column" Value="1" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Margin" Value="0 2 2 2" />
                <Setter TargetName="PART_ItemsHolder" Property="Grid.Column" Value="0" />
                <Setter TargetName="PART_ItemsHolder" Property="Grid.Row" Value="0" />
                <Setter TargetName="RowDefinition0" Property="Height" Value="*" />
                <Setter TargetName="RowDefinition1" Property="Height" Value="0" />
            </Trigger>
        </ControlTemplate.Triggers>

to

        <ControlTemplate.Triggers>
            <Trigger Property="TabStripPlacement" Value="Bottom">
                <Setter TargetName="contentPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="1" />
                <Setter TargetName="PART_HeaderPanel" Property="Margin" Value="2 0 2 2" />
                <Setter TargetName="RowDefinition0" Property="Height" Value="*" />
                <Setter TargetName="RowDefinition1" Property="Height" Value="Auto" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Left">
                <Setter TargetName="ColumnDefinition0" Property="Width" Value="Auto" />
                <Setter TargetName="ColumnDefinition1" Property="Width" Value="*" />
                <Setter TargetName="contentPanel" Property="Grid.Column" Value="1" />
                <Setter TargetName="contentPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Column" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Margin" Value="2 2 0 2" />
                <Setter TargetName="RowDefinition0" Property="Height" Value="*" />
                <Setter TargetName="RowDefinition1" Property="Height" Value="0" />
            </Trigger>
            <Trigger Property="TabStripPlacement" Value="Right">
                <Setter TargetName="ColumnDefinition0" Property="Width" Value="*" />
                <Setter TargetName="ColumnDefinition1" Property="Width" Value="Auto" />
                <Setter TargetName="contentPanel" Property="Grid.Column" Value="0" />
                <Setter TargetName="contentPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Column" Value="1" />
                <Setter TargetName="PART_HeaderPanel" Property="Grid.Row" Value="0" />
                <Setter TargetName="PART_HeaderPanel" Property="Margin" Value="0 2 2 2" />
                <Setter TargetName="RowDefinition0" Property="Height" Value="*" />
                <Setter TargetName="RowDefinition1" Property="Height" Value="0" />
            </Trigger>
        </ControlTemplate.Triggers>

@batzen batzen self-assigned this Mar 9, 2023
@batzen batzen added this to the 6.0.0 milestone Mar 9, 2023
@batzen batzen closed this as completed in 59f6034 Mar 10, 2023
@batzen
Copy link
Member

batzen commented Mar 10, 2023

Thx for reporting and also providing a solution.

@imonikov
Copy link
Author

You are welcome! :) Thanks for TabControlEx 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants