2009-11-17 83 views
21

我有一个ButtonControlTemplate,我正试图通过使用Trigger修改DropShadowEffectBorder。这是我的Xaml:如何通过ControlTemplate中的触发器设置DropShadowEffect的属性?

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

我得到错误,指出BorderEffect无法找到。
我也曾尝试:

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

但我也得到一个错误,告诉我,物业ShadowDepth无法Effect类型的对象(因为它使用的基类,而不是DropShadowEffect

发现

我该如何解决这个问题?

回答

25

您可以设置影响作为一个整体在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

没错,这就是我最终使用,但我这有,只是修改我需要的属性的方式...谢谢:-) – 2009-11-18 08:31:51

相关问题