У меня есть стиль для DataGridRow. Сначала я пытался использовать технику визуальных состояний, показанную в документах Microsoft на https://docs.microsoft.com/en-us/dotnet/framework/wpf/controls/datagrid-styles-and-templates. Я не мог заставить ее работать с чередующимися цветами строк. Кажется, что стиль не распознает визуальное состояние "VisualState x: Name =" NormalAlternatingRow "". Затем я переключил передачи и попытался использовать методы триггеров, которые можно найти в различных статьях. Я смог получить желаемый результат за одним исключением. Я использую цветную анимацию, чтобы изменить цвета строки таблицы данных. Все работает, как и ожидалось, когда я установил цвет наведения мыши с помощью «Setter Property =» Background »Value =« Blue »/>» в моем триггере. Цвет меняется на синий, а затем возвращается к предыдущему цвету, когда мышь уходит. Однако, если я пытаюсь изменить использование анимации в Trigger.EnterActions, цвет становится синим, но не возвращается к исходному цвету, когда мышь покидает строку. Итак, в конце концов у меня есть целая таблица данных, показывающая цветовые строки при наведении курсора мыши. Я не могу использовать Trigger.ExitActions, потому что я не знаю, какой был первоначальный цвет строки. Почему Сеттер работает правильно, а EnterActions - нет? Через несколько дней я в тупике.
<Style x:Key="DataGridRowStyle" TargetType="{x:Type DataGridRow}">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="False" />
<Condition Property="ItemsControl.AlternationIndex" Value="0" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
To="Red" Duration="0:0:.3"/>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="False" />
<Condition Property="ItemsControl.AlternationIndex" Value="1" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
To="White" Duration="0:0:.3"/>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
</MultiTrigger>
<Trigger Property="IsMouseOver" Value="True">
<!--<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
To="Blue" Duration="0:0:.5"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>-->
<Setter Property="Background" Value="Blue"/>
</Trigger>
</Style.Triggers>
</Style>