Добавление нового элемента в мои ObservableCollection
запускает последнюю строку для анимации (новая строка сверху, из-за сортировки), а также прокрутка и изменение размера анимирует все строки, которые ранее не отображались.
Все, что мне нужно, - это анимировать каждую новую строку только один раз после добавления.
Мне кажется, я изо всех сил пытаюсь найти правильный триггер (событие?) И не знаю, как правильно обрабатывать сортировку.Есть предложения?
<UserControl.Resources>
<CollectionViewSource IsLiveSortingRequested="True" Source="{Binding Incidents}" x:Key="cvs">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="TimeStamp" Direction="Descending"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
<DockPanel Margin="0">
<Label DockPanel.Dock ="Top" FontWeight="Black">
Incidents:
</Label>
<Grid DockPanel.Dock ="Bottom">
<DataGrid Background="{x:Null}"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.PanningMode="VerticalOnly"
ItemsSource="{Binding Source={StaticResource cvs}}"
AutoGenerateColumns="False" IsReadOnly="True"
CanUserSortColumns="True" HeadersVisibility="All" FontSize="12"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Time" Binding="{Binding TimeStamp, StringFormat={}{0:HH:mm:ss}}"></DataGridTextColumn>
<DataGridTextColumn Header="Name" Binding="{Binding CarName}"></DataGridTextColumn>
<DataGridTextColumn Header="Message" Binding="{Binding Message}" Width="*"></DataGridTextColumn>
</DataGrid.Columns>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(DataGridRow.Background).(SolidColorBrush.Color)"
Duration="00:00:08"
From="Red" To="Transparent"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>
</Grid>
</DockPanel>
public class Incident
{
public string CarName { get; set; }
public DateTime TimeStamp { get; set; }
public string Message { get; set; }
}
public class IncidentCollection : ObservableCollection<Incident>
{
}