2012-11-09 29 views
0

我試圖把動畫上邊框如下WPF邊境動畫不能正常工作

<LinearGradientBrush x:Key="RedButtonBrushUp" StartPoint=".5,0" EndPoint=".5,1"> 
     <GradientStop Color="#ffaaaa" Offset="0"/> 
     <GradientStop Color="#cc6666" Offset="0.6"/> 
     <GradientStop Color="#bb2222" Offset="1"/> 
    </LinearGradientBrush> 

    <LinearGradientBrush x:Key="ButtonBrushUp" StartPoint=".5,0" EndPoint=".5,1"> 
     <GradientStop Color="#aaccff" Offset="0"/> 
     <GradientStop Color="#7799ff" Offset="0.6"/> 
     <GradientStop Color="#555599" Offset="1"/> 
    </LinearGradientBrush> 


<Border x:Name="BorderUp" BorderThickness="2,2,2,2" CornerRadius="4,4,4,4" Background="{StaticResource RedButtonBrushUp}"> 
        <Border.Triggers> 
         <EventTrigger RoutedEvent="Border.Loaded"> 
          <BeginStoryboard> 
           <Storyboard > 
            <DoubleAnimation Storyboard.TargetName="BorderUp" 
            Storyboard.TargetProperty="Background" 
            RepeatBehavior="Forever" 
            AutoReverse="True" 
            To="{StaticResource ButtonBrushUp}" 
            Duration="0:0:0.5" ></DoubleAnimation> 
           </Storyboard> 
          </BeginStoryboard> 
         </EventTrigger> 
        </Border.Triggers> 
       </Border> 

但它說的StaticResource {} ButtonBrushUp是無效的一種類型。我究竟做錯了什麼?

回答

0

To不能接受梯度刷停止所需的這種更改。

這裏是你正在嘗試做

<Window.Resources> 
     <Storyboard x:Key="OnLoaded1"> 
      <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="myBorder"> 
       <EasingColorKeyFrame KeyTime="0:0:1" Value="#FFC53838"/> 
      </ColorAnimationUsingKeyFrames> 
     </Storyboard> 
    </Window.Resources> 
    <Window.Triggers> 
     <EventTrigger RoutedEvent="FrameworkElement.Loaded" SourceName="myBorder"> 
      <BeginStoryboard Storyboard="{StaticResource OnLoaded1}"/> 
     </EventTrigger> 
    </Window.Triggers> 
    <Grid> 
<StackPanel x:Name="stackPanel" Orientation="Vertical" HorizontalAlignment="Center"> 
    <Border x:Name="myBorder" Background="#99FFFFFF" BorderThickness="3" 
    Margin="0,60,0,20" Padding="20" > 
     <Border.BorderBrush> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="Black" Offset="0"/> 
       <GradientStop Color="White" Offset="1"/> 
      </LinearGradientBrush> 
     </Border.BorderBrush> 
     <TextBlock> 
     This example shows how to have a border change color after an initial load. 
     </TextBlock> 
    </Border> 
    </StackPanel> 
+0

感謝例如工作示例。現在只需要運行我的應用程序並進行一些更改並且動畫正在運行,但是當鼠標懸停在窗口上時,它會凍結,偶爾啓動和停止,並且非常幹,並且會停留很長時間。只要鼠標不再懸停在應用程序窗口上並位於桌面的另一個區域上,動畫就會平穩恢復並正常執行。爲什麼是這樣? – NZJames

+0

@ user1122909在一個單獨的測試項目中運行我的測試代碼,因爲當我將鼠標移動到屏幕的任何位置時,它不會發生在我的測試代碼中。 – OmegaMan