2016-12-09 16 views
0

私は、画像と4つのラベルを含むグリッドを含むボタン(またはButtonから派生したもの)を持っています。wpf style ColorAnimationUsingKeyFrames子要素をアニメ化する

条件付きでボタンをアニメーション化し、前景色と背景色を変更して点滅させたいとします。

これはバックグラウンドでは問題ありませんが、ラベルの前景ではうまく機能しません。

スタイル:

<Style x:Key="RequestButtonStyle" BasedOn="{StaticResource DefaultButtonStyle}" TargetType="local:CADButton"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Priority}" Value="1"> 
        <DataTrigger.EnterActions> 
         <BeginStoryboard> 
          <Storyboard 
           RepeatBehavior="Forever" 
           Duration="0:0:1.5"> 
           <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(local:CADButton.Background).Color"> 
            <DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource EmergencyCallColor}"/> 
            <DiscreteColorKeyFrame KeyTime="0:0:0.75" Value="{StaticResource DefaultButtonBackgroundColor}"/> 
           </ColorAnimationUsingKeyFrames> 
           <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Foreground).(SolidColorBrush.Color)"> 
            <DiscreteColorKeyFrame KeyTime="0:0:0" Value="{StaticResource DefaultButtonForegroundPressedColor}"/> 
            <DiscreteColorKeyFrame KeyTime="0:0:0.75" Value="{StaticResource DefaultButtonForegroundColor}"/> 
           </ColorAnimationUsingKeyFrames>       
          </Storyboard> 
         </BeginStoryboard> 
        </DataTrigger.EnterActions> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 

私はボタン内の任意のラベルをターゲットにするにはどうすればよいですか?

ラベルのフォアグラウンドをボタンのフォアグラウンドにバインドしようとしました(そして、私はちょうど "something.Foreground"ではなく "foreground"を設定しました)。それはある程度まで働いた。問題は、私はマウスオーバーで色を変えるラベル上のスタイルを持っているということです。これが完了すると、バインディングが上書きされ、点滅が停止します。

答えて

0

ボタン内のどのラベルをターゲットに設定するのですか?

Style Setterは適用されているタイプのプロパティ、つまりこの場合はCADButtonのプロパティのみを設定できるため、RequestButtonStyleのトリガではこれを行うことはできません。

ボタンのControlTemplateでラベルのプロパティをアニメートするには、ラベル自体に別のスタイルを定義し、それをラベルに適用する必要があります。または、親ButtonのForegroundプロパティにLabelのForegroundプロパティをバインドし、このプロパティをアニメーション化することもできます。これは、最も簡単で最良のソリューションなので、マウスでLabelの色をControlTemplateまたはButtonのスタイルに変更するトリガを移動する必要があります。

+0

私は両方を試しました。これをボタンの前景色に合わせると、最初のMouseOverが働き、テキストも変更されました。 ラベルに「スタンドアロンスタイル」を作成したとき、最初のマウスオーバーでもアニメーションが停止しました – h607732

+0

ボタンスタイルのラベルのプロパティを設定できないため、関連するすべてのXAMLマークアップとコードを含む問題の再現可能なサンプルを提供してくださいさらなる助けが必要な場合はスニペットを... – mm8

関連する問題