wpf – 如何通过ControlTemplate中的触发器设置DropShadowEffect的属性? - 代码日志

wpf – 如何通过ControlTemplate中的触发器设置DropShadowEffect的属性?

我有一个Button ControlTemplate,我试图通过使用一个触发器来修改边框上的DropShadowEffect。这是我的Xaml:

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

我该如何解决?

您可以在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>
http://stackoverflow.com/questions/1749882/how-can-i-set-a-property-of-a-dropshadoweffect-via-a-trigger-in-a-controltemplat

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:wpf – 如何通过ControlTemplate中的触发器设置DropShadowEffect的属性?