2011-09-23 85 views
2

我想在DragEnter事件触发时更改框架元素的背景,并在触发DragLeave事件时恢复其背景。另外,我希望将其应用于一种风格。在DragEnter上更改背景

继承人我有什么目前:

<EventTrigger RoutedEvent="Button.DragEnter"> 
      <BeginStoryboard x:Name="DragHoverStoryboard"> 
       <Storyboard> 
        <DoubleAnimation Storyboard.Target="??????????" 
            Storyboard.TargetProperty="Background" 
            Duration="0:0:0" 
            To="{DynamicResource HoverBrush}" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Button.DragLeave"> 
      <StopStoryboard BeginStoryboardName="DragHoverStoryboard" /> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Button.Drop"> 
      <StopStoryboard BeginStoryboardName="DragHoverStoryboard" /> 
     </EventTrigger> 

这里的问题是,因为这种风格可以适用于任何FrameworkElement的我不能用名义申请目标。我如何将目标应用于伴奏风格的元素?

+0

如果'TargetName'保留空白,是不是使用这个样式应用于的当前对象? – Rachel

回答

1

Storyboard.Target是不是问题,只是把它留下。但是,您需要更改动画的其余部分。要为某种颜色制作动画,请使用ColorAnimation而不是DoubleAnimation。此外,属性“背景”不包含颜色,而是包含画笔,因此可以改为使用属性“Background.Color”进行设置。这里是一个工作示例:

<Style TargetType="Button"> 
    <Setter Property="Background" Value="Red"/> 
    <Style.Triggers> 
     <EventTrigger RoutedEvent="Button.DragEnter"> 
      <BeginStoryboard x:Name="DragHoverStoryboard"> 
       <Storyboard> 
        <ColorAnimation Storyboard.TargetProperty="Background.Color" 
            Duration="0:0:0" To="Green" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="Button.DragLeave"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ColorAnimation Storyboard.TargetProperty="Background.Color" 
            Duration="0:0:0" To="Red" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Style.Triggers> 
</Style>