2009-11-17 6 views
21

Tengo un ButtonControlTemplate y estoy tratando de modificar un DropShadowEffect en un Border usando un Trigger. Aquí está mi Xaml:¿Cómo puedo establecer una propiedad de DropShadowEffect a través de un disparador en una plantilla de control?

<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> 

Aparece el error que indica que el BorderEffect no se puede encontrar.
También he intentado:

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

Pero también me sale un error que me dice que la propiedad ShadowDepth no se pudo encontrar en el objeto de tipo Effect (porque está utilizando la clase base en lugar de DropShadowEffect)

¿Cómo puedo resolver esto?

Respuesta

25

Puede establecer el efecto en su totalidad en el 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

Sí, eso es lo que terminé usando, pero yo la que había una manera de simplemente modificar la propiedad que necesito ... Gracias :-) –

Cuestiones relacionadas