2017-01-17 10 views
0

を設定せずにアニメーションWPFボーダーを設定するには、私はこれを持っている:がどのように名前

<Border.Triggers> 
    <EventTrigger RoutedEvent="Border.MouseEnter"> 
     <EventTrigger.Actions> 
      <BeginStoryboard> 
       <Storyboard TargetProperty="Background"> 
        <ColorAnimation From="Red" To="Green" Duration="0:0:2" AutoReverse="True" RepeatBehavior="Forever" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger.Actions> 
    </EventTrigger> 
</Border.Triggers> 

私はのGradientStopまたは単純な色のように、マウスを使ってオーバーホバリング時に背景を変更したいのですが、私はエラーを取得します。依存関係プロパティを調べる場所はTargetPropertyです。例えば

このdoesntの仕事のどちらか

<Grid.Triggers> 
          <EventTrigger RoutedEvent="Grid.Loaded"> 
           <EventTrigger.Actions> 
            <BeginStoryboard> 
             <Storyboard TargetProperty="Background.GradientStops[1].Color"> 
              <ColorAnimation From="Red" 
                  To="Green" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever" /> 
             </Storyboard> 
            </BeginStoryboard> 
            <BeginStoryboard> 
             <Storyboard TargetProperty="Background.GradientStops[1].Offset"> 
              <DoubleAnimation From="0" 
                  To="1" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever"/> 
             </Storyboard> 
            </BeginStoryboard> 
           </EventTrigger.Actions> 
          </EventTrigger> 
         </Grid.Triggers> 
+0

オーバーライドそれがスタイルだとマウスオーバーをトリガして、アニメーションを適用するか、ちょうどここトリガー – chris579

+0

で色を参照してください設定:http://stackoverflow.com/q/9145330/1136211。基本的に、ColorAnimationでブラシ(Backgroundプロパティの型)をアニメートすることはできません。 – Clemens

+0

私はそれを広げるためのアプローチが必要です、方法を学ぼうとしていますが、私は把握できません 1.プロパティの名前 2. wpfで特定の引数を設定する方法 – sasanaf

答えて

0

あなたがアニメーション化するブラシにボーダーの背景プロパティを設定する必要があります。ブラシがない場合、アニメーション化するものは何もありません。次のマークアップが動作します。これは、ボーダーの背景として設定されたSolidColorBrushのColorプロパティをアニメーション化します。たとえば

<Border Background="Transparent"> 
    <Border.Triggers> 
     <EventTrigger RoutedEvent="Border.MouseEnter"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="(Border.Background).(SolidColorBrush.Color)"> 
         <ColorAnimation From="Red" To="Green" Duration="0:0:2" AutoReverse="True" RepeatBehavior="Forever" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Border.Triggers> 
    <TextBlock>Border....</TextBlock> 
</Border> 

このdoesntの仕事ここでも

同じこと。 GradientStopのColorプロパティをアニメーション化するには、実際にGradientStopがアニメーション化されていることを確認する必要があります。つまり、GridのBackgroundプロパティをLinearGradientBrushに設定する必要があります。これは動作します:

<Grid> 
    <Grid.Background> 
     <LinearGradientBrush> 
      <GradientStop /> 
      <GradientStop /> 
     </LinearGradientBrush> 
    </Grid.Background> 
    <Grid.Triggers> 
     <EventTrigger RoutedEvent="Grid.Loaded"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="Background.GradientStops[0].Color"> 
         <ColorAnimation From="Red" 
                  To="Green" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever" /> 
        </Storyboard> 
       </BeginStoryboard> 
       <BeginStoryboard> 
        <Storyboard TargetProperty="Background.GradientStops[1].Offset"> 
         <DoubleAnimation From="0" 
                  To="1" 
                  Duration="0:0:2" 
                  AutoReverse="True" 
                  RepeatBehavior="Forever"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Grid.Triggers> 
    <TextBlock>Grid...</TextBlock> 
</Grid> 
+0

aight!ありがとうございました! – sasanaf

関連する問題