2011-09-23 41 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>