WPF Popup事件处理 - 如何在Popup打开时触发

Sou*_*asu 5 wpf triggers popup

我创建了一个WPF Popup,其中包含一个带边框的网格.有一些与边框关联的动画,我想在每次Popup打开时触发.

目前代码是这样的

<Popup x:Name="myPopUp" >
  <Border x:Name="myBorder" >
    <Border.Triggers>
               <EventTrigger RoutedEvent="Popup.Loaded">
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                    Storyboard.TargetName="myBorder" 
                                    Storyboard.TargetProperty="Height"
                                    From="10" To="255" Duration="0:0:0.20" />                      
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
     </Border.Triggers>
     <Grid />
   </Border>
</Popup>
Run Code Online (Sandbox Code Playgroud)

根据代码,边框首次显示动画,弹出窗口打开.每次弹出窗口打开时,我需要做些什么更改才能触发边框动画?

Sou*_*asu 7

根据这里给出的建议和现在的一点点(我在一年前问过这个:)),我可以找出解决方案.

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" >
<Window.Resources>
    <Style x:Key="popupStyle" TargetType="{x:Type Popup}" >
        <Style.Triggers>
            <Trigger Property="IsOpen" Value="True">
                <Trigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation
                                Storyboard.TargetProperty="Height"
                                From="10" To="255" Duration="0:0:0.20" />
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <Button Width="100" Height="100" Click="Button_Click"></Button>
    <Popup Name="popUp" Width="100" Height="100"  Style="{StaticResource popupStyle}" >
        <Border x:Name="myBorder" Background="Blue"/>
    </Popup>
</Grid>
Run Code Online (Sandbox Code Playgroud)

以及触发弹出窗口后面的示例代码..

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        popUp.PlacementTarget = (Button)sender;
        popUp.IsOpen = true;
    }
Run Code Online (Sandbox Code Playgroud)

虽然我只能在这里设置Popup而不是Border的动画,但它几乎可以给出相同的结果.