2011-01-26 69 views
0

我正在尝试更改鼠标左键向下的边框背景。按钮我不明白。当然我的渐变有3站。WPF背景更改的边框OnMouseDown

Eventtrigger:

<EventTrigger RoutedEvent="UIElement.PreviewMouseLeftButtonDown" SourceName="border"> 
    <BeginStoryboard x:Name="MouseDown_BeginStoryboard" Storyboard="{StaticResource OnMouseDown}"/> 
</EventTrigger> 

故事板:

<Storyboard x:Key="OnMouseDown"> 
    <ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="Red" /> 
    <ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="Red" /> 
    <ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="Red" /> 
</Storyboard> 

如果有人看到了错误,请告诉我。)

回答

1

我看不出有什么明显的错误和我使用您发布的代码创建的示例项目工作得很好。也许你可以用它来寻找您的问题

<Window.Resources> 
    <Storyboard x:Key="OnMouseDown"> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[0].Color" 
         To="Red" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[1].Color" 
         To="Red" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[2].Color" 
         To="Red" /> 
    </Storyboard> 
</Window.Resources> 
<Grid> 
    <Border Name="border"> 
     <Border.Background> 
      <LinearGradientBrush> 
       <GradientStop Color="Red" Offset="0"/> 
       <GradientStop Color="Green" Offset="0.5"/> 
       <GradientStop Color="Blue" Offset="1.0"/> 
      </LinearGradientBrush> 
     </Border.Background> 
     <Border.Triggers> 
      <EventTrigger RoutedEvent="PreviewMouseLeftButtonDown" 
          SourceName="border"> 
       <BeginStoryboard x:Name="MouseDown_BeginStoryboard" 
           Storyboard="{StaticResource OnMouseDown}"/> 
      </EventTrigger> 
     </Border.Triggers> 
    </Border> 
</Grid> 

更新的

我尝试添加mouseLeave事件以及源和它仍然工作。

更新2

新增的MouseEnter

<Window.Resources> 
    <Storyboard x:Key="OnMouseDown"> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[0].Color" 
         To="Red" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[1].Color" 
         To="Red" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[2].Color" 
         To="Red" /> 
    </Storyboard> 
    <Storyboard x:Key="OnMouseLeave"> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[0].Color" 
         To="Blue" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[1].Color" 
         To="Blue" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[2].Color" 
         To="Blue" /> 
    </Storyboard> 
    <Storyboard x:Key="OnMouseEnter"> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[0].Color" 
         To="Green" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[1].Color" 
         To="Green" /> 
     <ColorAnimation Duration="0:0:0.15" 
         Storyboard.TargetName="border" 
         Storyboard.TargetProperty="Background.GradientStops[2].Color" 
         To="Green" /> 
    </Storyboard> 
</Window.Resources> 
<Grid> 
    <Border Name="border"> 
     <Border.Background> 
      <LinearGradientBrush> 
       <GradientStop Color="Red" Offset="0"/> 
       <GradientStop Color="Green" Offset="0.5"/> 
       <GradientStop Color="Blue" Offset="1.0"/> 
      </LinearGradientBrush> 
     </Border.Background> 
     <Border.Triggers> 
      <EventTrigger RoutedEvent="PreviewMouseLeftButtonDown" SourceName="border"> 
       <BeginStoryboard x:Name="MouseDown_BeginStoryboard" Storyboard="{StaticResource OnMouseDown}"/> 
      </EventTrigger> 
      <EventTrigger RoutedEvent="MouseLeave" SourceName="border"> 
       <BeginStoryboard x:Name="MouseLeave_BeginStoryboard" Storyboard="{StaticResource OnMouseLeave}"/> 
      </EventTrigger> 
      <EventTrigger RoutedEvent="MouseEnter" SourceName="border"> 
       <BeginStoryboard x:Name="MouseEnter_BeginStoryboard" Storyboard="{StaticResource OnMouseEnter}"/> 
      </EventTrigger> 
     </Border.Triggers> 
    </Border> 
</Grid> 
+0

感谢我发现的错误: 如果我也有一个鼠标离开,事件这是行不通的。你知道吗? – 2011-01-26 21:18:51