2009-11-17 9 views
21

Mam ButtonControlTemplate i próbuję zmodyfikować DropShadowEffect na Border przy użyciu Trigger. Oto mój Xaml:Jak ustawić właściwość DropShadowEffect przez wyzwalacz w ControlTemplate?

<Button.Template> 
    <ControlTemplate TargetType="Button"> 
    <Border x:Name="ButtonBorder" Margin="10" CornerRadius="5" Background="Gray"> 
     <Border.Effect> 
     <DropShadowEffect ShadowDepth="5" x:Name="BorderEffect" /> 
     </Border.Effect> 
     <ContentPresenter HorizontalAlignment="Center" /> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="Button.IsMouseOver" Value="True"> 
     <Setter Property="Background" TargetName="ButtonBorder" Value="LightGray" /> 
     </Trigger> 
     <Trigger Property="Button.IsPressed" Value="True"> 
     <Setter Property="Margin" TargetName="ButtonBorder" Value="13,13,7,7" /> 
     <!-- this is where I get the error --> 
     <Setter Property="ShadowDepth" TargetName="BorderEffect" Value="2" /> 
     </Trigger> 
    </ControlTemplate.Triggers> 
    </ControlTemplate> 
</Button.Template> 

Występuje błąd informujący, że nie można znaleźć BorderEffect.
Próbowałem również:

<Setter Property="Effect.ShadowDepth" TargetName="ButtonBorder" Value="2" /> 

Ale też pojawia się błąd mówiąc mi, że nieruchomość ShadowDepth nie można znaleźć na obiekcie typu Effect (ponieważ jest przy użyciu klasy bazowej zamiast DropShadowEffect)

Jak mogę to rozwiązać?

Odpowiedz

25

Można ustawić efekt jako całość w setter.value

<Setter Property="Margin" TargetName="ButtonBorder" Value="13,13,7,7" /> 
    <Setter Property="Effect" TargetName="ButtonBorder" > 
     <Setter.Value> 
     <DropShadowEffect ShadowDepth="2" /> 
     </Setter.Value> 
    </Setter> 
    </Trigger> 
+0

Tak, to właśnie skończyło się, ale które nie było sposobu, aby po prostu zmodyfikować właściwość muszę ... Dzięki :-) –

Powiązane problemy