Действия ввода триггера имеют поведение, отличное от rnet, чем у Setter триггера в DataGridRowStyle - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть стиль для 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...