Анимации EnterActions не останавливаются и анимации ExitActions не запускаются - PullRequest
0 голосов
/ 03 октября 2011

одно из приложений моей компании отображает всплывающие окна с помощью элемента управления содержимым, центрированного на экране, который скрыт до необходимости, и прямоугольника с радиальным градиентом позади него, чтобы заблокировать остальную часть пользовательского интерфейса, плюс это выглядит красиво.Я пытаюсь добавить анимацию для отображения прямоугольника и всплывающего окна, а не просто всплывающего окна.Анимация ввода работает хорошо, но анимация выхода никогда не вызывается, когда мое всплывающее окно закрыто, и эффекты анимации ввода остаются постоянными.

Мой XAML выглядит следующим образом:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Panel.ZIndex="999" DataContext="{Binding Source={x:Static popup:PopUpService.Instance}}" IsHitTestVisible="{Binding IsPopUpVisible}" Opacity="0">
        <Rectangle Fill="{DynamicResource RadialBlackToBlack}" />
        <ItemsControl Focusable="False" ItemsSource="{Binding PopUps}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid IsItemsHost="True" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
        <Grid.Style>
            <Style TargetType="Grid">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsPopUpVisible, Source={x:Static popup:PopUpService.Instance}}" Value="True">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                        To="100" Duration="0:0:1"/>

                                </Storyboard>
                            </BeginStoryboard>

                        </DataTrigger.EnterActions>
                        <DataTrigger.ExitActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                        To="0" Duration="0:0:1" />
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.ExitActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>
    </Grid>

Что я делаю не так?

Спасибо.

1 Ответ

1 голос
/ 03 октября 2011

Непрозрачность должна анимироваться до 1, а не 100, это вызывает проблему. (Анимация от 100 до 1 не видна, а последний бит от 1 до 0 получает небольшое время анимации)

Может быть, вы также хотите избавиться от избыточности:

  1. Не устанавливайте свойства дважды или без необходимости, сбросьте Duration на Storyboards и все HoldEnd s, что является значением по умолчанию.
  2. Почему в первом СО есть AutoReverse?
...