2016-08-01 298 views
0

すべてのボタンをクリックすると5秒間点滅します。WPF、クリックするとボタンの背景が点滅する方法xaml

  • 私は(私はXAMLでボタンを宣言するか、スタイルが自動的にすべてのボタンには適用されない?ときに私は、スタイルを参照する必要があります)すべてのボタンに適用されるスタイルを経由して、それをやろう

  • 私はForegroundの色を変更することができますが、私が望むのは、ボタンのテキストの背後にある背景がテキスト自体ではなく色が変わるということです。

  • 私は現在ColorAnimationですが、ボタンの背景を2色の間で交互に点滅させたいので、色のスペクトル全体を表示したくありません。

これまでのコードは次のとおりです。誰かが正しい方向に私を助けてくれますか?

編集

ボタンの背景をアニメーション化することは、私は簡単にフォアグラウンドアニメーションで落ち着くことができアニメーション化する厳しいある場合。

<Style TargetType="{x:Type Button}"> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="Click"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <Storyboard BeginTime="00:00:00" 
           RepeatBehavior="Forever" 
           Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"> 
          <ColorAnimation From="Black" To="Red" Duration="0:0:5"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
     </Style.Triggers> 
    </Style> 

答えて

4

1.Yesスタイルはすべてのボタンに適用される

2.Animate backgrouund Storyboard.TargetProperty = "(Button.Background)。(SolidColorBrush.Color)"。アニメーションスタイルがデフォルトスタイルで上書きされないようにしてください。 ref stackoverflow

3. 2つの不透明アニメーションを同時に実行することができます。同じtime.Thisでtransparantする黒と赤から他方へtransparantから行く一つは、私が試した

1.リスト項目

EDIT ...それを試していなかっただけでアイデアですこのコードとそれは働いた。キーは、デフォルトのスタイルの幅OverridesDefaultStyle = "False" に

はまた赤い色に黒を表示するためにFocusableのは= "false" を追加し

<Window.Resources> 
<Style TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="Blue"></Setter> 
    <Style.Triggers> 
     <EventTrigger RoutedEvent="Click"> 
      <EventTrigger.Actions> 
       <BeginStoryboard> 
         <Storyboard BeginTime="00:00:00" 
         RepeatBehavior="Forever" 
            AutoReverse="True" 
         Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"> 
          <ColorAnimation From="Black" To="Red" Duration="0:0:1"/> 
         </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger.Actions> 
     </EventTrigger> 
    </Style.Triggers> 
</Style> 

</Window.Resources> 
<Button Width="100" Height="35" OverridesDefaultStyle="False" Focusable="False">dfdfdf</Button> 

EDITを無効にすることです。タイミングを好きなように変更してください。

+0

何も起こりません。これは私のカラーアニメーションです: ''しかし、それは何の効果もありません。 –

2

以下を試すことができます。私は、これは非常にきれいであると思ういけないが、色が退色することなく、あなたの条件に一致します。

<Style TargetType="{x:Type Button}"> 
      <Style.Resources> 
       <Storyboard x:Key="Storyboard" Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"> 
        <ColorAnimationUsingKeyFrames Duration="0:0:5" > 
         <DiscreteColorKeyFrame KeyTime="0:0:1" Value="Black"></DiscreteColorKeyFrame> 
         <DiscreteColorKeyFrame KeyTime="0:0:2" Value="Red"></DiscreteColorKeyFrame> 
         <DiscreteColorKeyFrame KeyTime="0:0:3" Value="Black"></DiscreteColorKeyFrame> 
         <DiscreteColorKeyFrame KeyTime="0:0:4" Value="Red"></DiscreteColorKeyFrame> 
         <DiscreteColorKeyFrame KeyTime="0:0:5" Value="Black"></DiscreteColorKeyFrame> 
        </ColorAnimationUsingKeyFrames> 
       </Storyboard> 
      </Style.Resources> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="Click"> 
        <EventTrigger.Actions> 
         <BeginStoryboard Name="flash" Storyboard="{StaticResource Storyboard}"/> 
        </EventTrigger.Actions> 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 

ちょうどそれらをあなたの必要性として

+0

別の答えに対するコメントに示されているように、何らかの理由で、Backgroundのボタンの背景色を明示的に指定していても、Backgroundはボタンの背景色を変更しません。これは多くの問題が発生しているようです。しかし、あなたが持っていたアイデアは(「フォアグラウンド」を使って)動作しますが、それは粗い解決策です。結局私は '不透明度'をターゲットにした 'DoubleAninmation'を使うことに決めました。 –

+0

ボタンの初期の背景をどこかに設定しましたか?あなたの行動はまさにこのように聞こえる。 – lokusking

+0

私はそうではありませんが、ツリーの上にあるボタンを含むコントロールがそれを設定する可能性があります。私がDevExpressコントロールのボタンをホストしているサードパーティのライブラリ(DevExpress)を使用していると、それを伝えるのは難しいです。 –

-1

DiscreteColorKeyFrameで色を変更する私は、背景色を変更するには、一般的に問題を持っているようですこれは広く共有されている問題のようです。私は代わりに、同様に動作する以下の解決策を考え出しました。これはDoubleAnimationを経由してOpacityをターゲットとしており、非常に柔軟です。

<Style TargetType="{x:Type Button}"> 
     <Style.Triggers> 
      <EventTrigger RoutedEvent="Button.Click"> 
       <EventTrigger.Actions> 
        <BeginStoryboard> 
         <Storyboard> 
          <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.4" RepeatBehavior="30x"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger.Actions> 
      </EventTrigger> 
     </Style.Triggers> 
    </Style> 
関連する問題