Установить фон родительского на основе содержимого управления контентом - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть шаблон tabitem (стиль по умолчанию), в котором фон элемента вкладки имеет фиксированный цвет.

<Style x:Key="tbitem" TargetType="{x:Type TabItem}">
        <Setter Property="Focusable" Value="True"/>
        <Setter Property="KeyboardNavigation.TabNavigation" Value="Continue"/>
        <Setter Property="KeyboardNavigation.DirectionalNavigation" Value="Continue"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TabItem}">
                    <Border Name="Border" BorderBrush="Transparent" BorderThickness="0" CornerRadius="0" Margin="0" Background="Transparent" >
                        <DockPanel>
                            <Label   x:Name="TabLabel" DockPanel.Dock="Left" Foreground="White" FontWeight="ExtraBold" FontFamily="Segoe UI" FontSize="14" >
                                    <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  x:Name="ContentSite" RecognizesAccessKey="True" ContentSource="Header" />
                            </Label>
                            <Button Name="PART_BTNCLOSE" DockPanel.Dock="Right" Style="{StaticResource CloseButtonStyle}" Command="USD:ActionCommands.CloseSessionTab"/>
                        </DockPanel>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter Property="Panel.ZIndex" Value="100"/>
                            <Setter TargetName="Border" Property="BorderBrush" Value="Green"/>
                            <Setter TargetName="Border" Property="Background" Value="Green"/>
                            <Setter TargetName="Border" Property="Margin" Value="2,0,0,0"/>
                            <Setter TargetName="PART_BTNCLOSE" Property="Visibility" Value="{Binding CloseButtonVisibility}"/>
                            <Setter Property="KeyboardNavigation.TabNavigation" Value="Continue"/>
                            <Setter Property="KeyboardNavigation.DirectionalNavigation" Value="Continue"/>
                        </Trigger>
                        <Trigger Property="IsSelected" Value="False">
                            <Setter TargetName="TabLabel" Property="Foreground" Value="#666666"/>
                        </Trigger>

                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

И мой фактический табит содержит текстовый блок для отображения заголовка вкладки

<TabItem Style="{StaticResource SessionTabs}" >
                <TabItem.Header>
                    <TextBlock Text="Tab 1"  >

                    </TextBlock>

                </TabItem.Header>

            </TabItem>

Пока все работает хорошо. Проблема заключается в том ... что иногда мне приходится менять один из цветов моей вкладки в зависимости от некоторых условий, и что если я делаю это с моим текстовым блоком, то внешний вид довольно странный. enter image description here

Можно ли каким-либо образом установить фон границы моего родителя в соответствии с фоном моего текстового блока? или как-то вызвать / обновить фон предка от ребенка?

1 Ответ

0 голосов
/ 11 сентября 2018

Установите для отступа Label значение 0 и измените TabItemHeader следующим образом:

<TabItem.Header>
   <Grid Background="Red" Margin="0 0 -10 0">
      <TextBlock Margin="5 5 15 5" Text="Tab 1"/>
   </Grid>
</TabItem.Header>

-10 - ваша ширина кнопки, а 15 - (5 + кнопка. Ширина)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...