2015-01-13 2 views
2

Я работаю над сеткой WPF, перечисляя некоторые объекты. Если данные об объекте меняются, я хочу начать анимацию.WPF анимация при изменении данных

Ниже отрывок кода XAML перечислен

<ListView Name="ListViewEmployeeDetails" Grid.Row="1" Margin="4,109,12,23" ItemsSource="{Binding Products}" > 
     <ListView.View> 
      <GridView x:Name="grdTest"> 
       <GridViewColumn Header="ID" Width="100"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock x:Name="idField" Text="{Binding ID}" TextDecorations="Underline" Foreground="Blue"/> 
          <DataTemplate.Triggers> 
           <DataTrigger Binding="{Binding ID}"> 
            <DataTrigger.EnterActions> 
             <BeginStoryboard> 
              <Storyboard> 
               <DoubleAnimation Duration="0:0:5" To="0.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="idField"/> 
              </Storyboard> 
             </BeginStoryboard> 
            </DataTrigger.EnterActions> 
           </DataTrigger> 
          </DataTemplate.Triggers> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="100" /> 
       <GridViewColumn Header="Price" DisplayMemberBinding="{Binding Price}" Width="100" /> 
       <GridViewColumn Header="Reliab" DisplayMemberBinding="{Binding Reliability}" Width="100" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

Всякий раз, когда изменяется свойство, я огонь PropertyChangedEvent. Например, сеттер идентификатору выглядит следующим образом:

 set 
     { 
      m_ID = value; 
      OnPropertyChanged("ID"); 
     } 

Где OnPropertyChanged функция выглядит следующим образом:

#region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void OnPropertyChanged(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
    #endregion 

Однако, когда ID изменяется, анимация не срабатывает. Любая идея о том, как это исправить?

ответ

2

Вы должны использовать триггер события:

Попробуйте что-то вроде этого:

<DataTemplate.Triggers> 
    <EventTrigger RoutedEvent="Binding.TargetUpdated"> 
     <BeginStoryboard> 
      <Storyboard> 
       <DoubleAnimation Duration="0:0:5" To="0.0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="idField"/> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger> 
</DataTemplate.Triggers> 

Edit: не забудьте установить это в шаблоне!

<TextField Name="idField" Text="{Binding ID, NotifyOnTargetUpdated=True}" /> 
+0

Большое спасибо, что это сработало как шарм! – irundaia

Смежные вопросы