Grow TabControl с окном, с пользовательским шаблоном - PullRequest
0 голосов
/ 28 апреля 2020

У меня проблемы с увеличением размера моего TabControl до размера моего окна. Когда я устанавливаю высоту на Авто, на самом деле она просто сжимается, чтобы соответствовать моему обычному Tabitems. Помимо пользовательского стиля TabItem я также использую стиль для самого TabControl, и мне интересно, может ли это как-то вызвать проблему.

В настоящее время я устанавливаю высоту для TabControl до 350, что делает его больше, чем элементы Tab, но мне нужно растянуть его до контейнера, а не сжать до его содержимого.

<Window  ... >
    <Window.Resources>

        <!--Template/Styling for individual Tab Headers-->
        <Style TargetType="TabItem">
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabItem">
                        <Border BorderBrush="Black" BorderThickness="{TemplateBinding BorderThickness}">
                            <StackPanel Name="Panel">
                                <Ellipse Margin="0 20 0 10" Height="30" Width="30" Fill="Gray"/>
                                <Label Name="Header" Content="{TemplateBinding Header}" />
                            </StackPanel>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <!-- Restructuring the entire TabControl (tabs AND content)
                This full restructuring is required to vertically center the TabPanel -->
        <Style TargetType="TabControl">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabControl">
                        <Grid Margin="5">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>

                            <!--Grid provides container to give border and mask for TabPanel (which contains the tab headers)-->
                            <Grid VerticalAlignment="Center" Grid.Column="0">
                                <!--First border (previous sibling) provides mask to round edges of TabPanel-->
                                <Border Name="mask" Background="White" CornerRadius="5"/>
                                <TabPanel Grid.Column="0" IsItemsHost="True" VerticalAlignment="Center" Margin="0">
                                    <TabPanel.OpacityMask>
                                        <VisualBrush Visual="{Binding ElementName=mask}"/>
                                    </TabPanel.OpacityMask>
                                </TabPanel>
                                <!-- Second border (subsequent sibling) provides the actual border for the TabPanel.
                                        Must be a sibling, not a parent, or border won't "wrap" correctly. -->
                                <Border Grid.Column="0" BorderThickness="1" BorderBrush="Black" CornerRadius="5"/>

                            </Grid>

                            <!--The Tab Content-->
                            <Border Grid.Column="1" BorderThickness="1" BorderBrush="Red" Height="Auto">
                                <ContentPresenter Margin="5" ContentSource="SelectedContent" />
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    <Grid>
        <TabControl TabStripPlacement="Left" VerticalAlignment="Center" Height="350">
            <TabItem Header="Exams"/>
            <TabItem Header="Templates"  BorderThickness="0 1"/>
            <TabItem Header="Compare Exams"/>
        </TabControl>
    </Grid>
</Window>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...