[WPF] Dropshadow weghalen bij geselecteerde tab

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • _Jeffrey_
  • Registratie: Maart 2003
  • Niet online
Ik ben bezig een aangepaste TabControl te maken in WPF. Ik heb aan de onderkant van een tab een kleine dropshadow, wat ik realiseer met een aparte Border in het TabItem. Ik wil dat de geselecteerde tab deze schaduw niet heeft, maar ik weet niet hoe ik dat doen.

Google geeft een hoop voorbeelden om een dropshadow te maken, maar niet hoe dat met een trigger aan te passen. Feitelijk wil ik een eigenschap (visibility) aanpassen van een child element van de TabItem, maar ik weet niet hoe ik die moet benaderen.


Relevante code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
        <Style x:Key="{x:Type TabItem}" TargetType="{x:Type TabItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TabItem">
                        <Grid x:Name="grd">
                            <Path Name="TabPath" Margin="0" VerticalAlignment="Top" Stretch="Fill" Data="M39,96 C48.75,96 59.25,0 76,0 92.75,0 247,0 258,0 269,0 285.5,95.75 295,96" Fill="#e6e6e6" />
                            <Border ClipToBounds="True">
                                <Border Background="Transparent" BorderBrush="Black" BorderThickness="0,0,0,10" Margin="0,0,0,-10">
                                    <Border.Effect>
                                        <DropShadowEffect ShadowDepth="0" BlurRadius="10" />
                                    </Border.Effect>
                                </Border>
                            </Border>
                            <ContentPresenter x:Name="TabItemContent" ContentSource="Header" Margin="25,0,0,0" VerticalAlignment="Center" TextElement.Foreground="#FF000000"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="Selector.IsSelected" Value="True">
                                <Setter Property="Fill" TargetName="TabPath" Value="White" />

Kan ik op dit punt met een <setter> de Visibility van de Border op Hidden zetten?

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

Beste antwoord (via _Jeffrey_ op 16-07-2018 17:48)


  • -Sybren
  • Registratie: Juli 2014
  • Laatst online: 10-06-2024
Kun je dit niet doen?

code:
1
<Setter Property="BorderThickness" Value="0"/>


Eventueel je Border een naam geven zodat je deze makkelijk kunt benaderen in de setter.

[ Voor 6% gewijzigd door -Sybren op 15-07-2018 22:57 ]

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • -Sybren
  • Registratie: Juli 2014
  • Laatst online: 10-06-2024
Kun je dit niet doen?

code:
1
<Setter Property="BorderThickness" Value="0"/>


Eventueel je Border een naam geven zodat je deze makkelijk kunt benaderen in de setter.

[ Voor 6% gewijzigd door -Sybren op 15-07-2018 22:57 ]


Acties:
  • 0 Henk 'm!

  • _Jeffrey_
  • Registratie: Maart 2003
  • Niet online
De border een naam geven en zo benaderen met TargetName was inderdaad de oplossing. Simpele oplossing en heel logisch achteraf. Dank :)

Ik denk dat ik te veel gefocust was op het benaderen via de object structuur.