Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to animate a Popup when it hides?

i created a Popup Style for using in my windows 8.1 application. And i applied PopupThemeTransition to it's ChildTransitions Property.

<Style x:Key="AnimatedPopupStyle" TargetType="Popup">
    <Setter Property="IsLightDismissEnabled" Value="False"/>
    <Setter Property="ChildTransitions">
        <Setter.Value>
            <TransitionCollection>
                <PopupThemeTransition/>
            </TransitionCollection>
        </Setter.Value>
    </Setter>
</Style>

My problem is that it animates when it Opens & not animating when closing. What to do with that for animating the content on hiding ? Do i want to create a Custom Popup control?

NB: I know that PopInThemeAnimation & PopOutThemeAnimation is there . But don't know how to use it on this condition ?

like image 415
asitis Avatar asked Jan 14 '14 10:01

asitis


People also ask

What is pop up animation?

What Are Popup Animation Effects? Popup animation effects are either visual or sound cues added to your popup campaigns to catch your reader's eye. They are insanely valuable tools when used right.

How do you animate elements in bubbles?

First, we'll need to delete the existing “Show popup” workflow. Next, we'll create a new workflow action by navigating to the Element Actions menu and selecting “Animate”. Once we have selected the “Animate” option, we can access the action's editor to select our animation.


1 Answers

This is not native to the Popup because they typically do not have an exit animation. Having said that, there's no reason you can't add an exit animation to a Popup control.

Try this:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.Resources>
        <Storyboard x:Name="ShowPopup">
            <PopInThemeAnimation Storyboard.TargetName="MyPopup" />
        </Storyboard>
        <Storyboard x:Name="HidePopup">
            <PopOutThemeAnimation Storyboard.TargetName="MyPopup" />
        </Storyboard>
    </Grid.Resources>
    <Popup x:Name="MyPopup" IsOpen="True"
           HorizontalAlignment="Center" VerticalAlignment="Center">
        <Popup.Transitions>
            <TransitionCollection>
                <PopupThemeTransition />
            </TransitionCollection>
        </Popup.Transitions>
        <Grid Height="200" Width="200" Background="Red">
            <StackPanel>
                <Button Content="Hide (Native)" HorizontalAlignment="Center">
                    <Interactivity:Interaction.Behaviors>
                        <Core:EventTriggerBehavior EventName="Click">
                            <Core:ChangePropertyAction 
                                PropertyName="IsOpen" 
                                TargetObject="{Binding ElementName=MyPopup}" />
                        </Core:EventTriggerBehavior>
                    </Interactivity:Interaction.Behaviors>
                </Button>
                <Button Content="Hide (Storyboard)" HorizontalAlignment="Center">
                    <Interactivity:Interaction.Behaviors>
                        <Core:EventTriggerBehavior EventName="Click">
                            <Media:ControlStoryboardAction 
                                Storyboard="{StaticResource HidePopup}"/>
                        </Core:EventTriggerBehavior>
                    </Interactivity:Interaction.Behaviors>
                </Button>
            </StackPanel>
        </Grid>
    </Popup>
    <StackPanel>
        <Button Content="Show Popup (Native)" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Interactivity:Interaction.Behaviors>
                <Core:EventTriggerBehavior EventName="Click">
                    <Core:ChangePropertyAction 
                        TargetObject="{Binding ElementName=MyPopup}" 
                        PropertyName="IsOpen" Value="True"/>
                </Core:EventTriggerBehavior>
            </Interactivity:Interaction.Behaviors>
        </Button>
        <Button Content="Show Popup (Storyboard)" HorizontalAlignment="Left" VerticalAlignment="Top">
            <Interactivity:Interaction.Behaviors>
                <Core:EventTriggerBehavior EventName="Click">
                    <Core:ChangePropertyAction 
                        TargetObject="{Binding ElementName=MyPopup}" 
                        PropertyName="IsOpen" Value="True"/>
                    <Media:ControlStoryboardAction 
                        Storyboard="{StaticResource ShowPopup}"/>
                </Core:EventTriggerBehavior>
            </Interactivity:Interaction.Behaviors>
        </Button>
    </StackPanel>
</Grid>

Using these:

xmlns:Interactivity="using:Microsoft.Xaml.Interactivity" 
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
xmlns:Media="using:Microsoft.Xaml.Interactions.Media"

Best of luck!

like image 153
Jerry Nixon Avatar answered Oct 13 '22 08:10

Jerry Nixon