2013-08-02 74 views
0

我想在DataTrigger觸發時有一個閃爍/動畫的按鈕。我想動畫按鈕的背景。以下是我的xaml代碼。Datatrigger上的按鈕閃爍

<Window.Resources> 
    <Style x:Key="ButtonStyle" TargetType="{x:Type Button}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.Notification}" Value="True"> 
       <DataTrigger.EnterActions> 
        <BeginStoryboard Name="StartBlinking"> 
         <Storyboard> 
          <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="Orange" Duration="00:00:00.4" RepeatBehavior="Forever" AutoReverse="True"/> 
         </Storyboard> 
        </BeginStoryboard> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.Notification}" Value="False"> 
       <DataTrigger.EnterActions> 
        <RemoveStoryboard BeginStoryboardName="StartBlinking"/> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 

</Window.Resources> 
<Grid> 
    <Grid> 
     <Button x:Name="Button" Content="Button" Width="25" Height="25" Margin="158,62,320,224" Click="Button_Click"></Button> 
     <Button Style="{StaticResource ButtonStyle}" Content="Button" Focusable="False" Height="75" HorizontalAlignment="Left" Margin="23,146,0,0" Name="btnImgBrush" VerticalAlignment="Top" Width="160"></Button> 

    </Grid> 
</Grid> 

這裏是後端代碼:

public Boolean Notification 
    { 
     get { return new_notification; } 

     set 
     { 
      new_notification = value; 
      RaisePropertyChanged("Notification"); 
     } 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     if (Notification) 
     { 
      Notification = false; 
     } 
     else 
     { 
      Notification = true; 
     } 
    } 

但是,它沒有工作。任何想法,爲什麼它不工作?

任何幫助,非常感謝,謝謝。

+0

你不能動畫背景屬性一樣this..animation對象不能用於動畫屬性「背景」,因爲它是不兼容的類型「System.Windows.Media.Brush」。 – Vishal

+0

你在哪裏宣佈你的通知財產..?在viewmodel或代碼後面.. ?? – Vishal

+0

是的,我已經在viewmodel中聲明瞭通知屬性。有沒有其他的方法來基於通知屬性來設置按鈕背景的動畫效果? –

回答

4

最後的工作。謝謝:)

<Window.Resources> 
<Style x:Key="ButtonStyle" TargetType="{x:Type Button}"> 
    <Setter Property="Background"> 
      <Setter.Value> 
       <SolidColorBrush Color="Transparent"/> 
      </Setter.Value> 
     </Setter> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.Notification}" Value="True"> 
      <DataTrigger.EnterActions> 
       <BeginStoryboard Name="StartBlinking"> 
        <Storyboard> 
         <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="Orange" Duration="00:00:00.4" RepeatBehavior="Forever" AutoReverse="True"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.Notification}" Value="False"> 
      <DataTrigger.EnterActions> 
       <RemoveStoryboard BeginStoryboardName="StartBlinking"/> 
      </DataTrigger.EnterActions> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

0

嘗試這個 -

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}"> 
<Style.Triggers> 
         <DataTrigger Binding="{Binding Path=Notification,RelativeSource={RelativeSource AncestorType=Window}}" Value="True"> 
          <DataTrigger.EnterActions> 
           <BeginStoryboard Name="StartBlinking"> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" From="Transparent" To="Orange" Duration="00:00:00.4" RepeatBehavior="Forever" AutoReverse="True"/> 
            </Storyboard> 
           </BeginStoryboard> 
          </DataTrigger.EnterActions> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding Path=Notification,,RelativeSource={RelativeSource AncestorType=Window}}" Value="False"> 
          <DataTrigger.EnterActions> 
           <RemoveStoryboard BeginStoryboardName="StartBlinking"/> 
          </DataTrigger.EnterActions> 
         </DataTrigger> 
        </Style.Triggers> 
</Style> 
+0

我已經嘗試過了。它不適用。 –

+0

你可以顯示你的viewmodel代碼,你已經定義了通知屬性..?和一些更多的xaml代碼 – Vishal

+0

我編輯了這個問題,並添加了其他xaml代碼和viewmodel代碼,我已經定義了通知屬性。 –