当Popup的IsOpen属性设置为True时,开始一个StoryBoard

时间:2011-05-26 23:47:17

标签: wpf xaml animation triggers storyboard

如果Popup的IsOpen属性设置为True,如何开始StoryBoard?

前:

<EventTrigger RoutedEvent="{Binding IsOpen, ElementName=pop}">
    <BeginStoryboard>
        <Storyboard>
            <DoubleAnimation Storyboard.TargetName="pop"
                             Storyboard.TargetProperty="Height"
                             Duration="0:0:1"
                             From="0.0"
                             To="200" />
            <DoubleAnimation Storyboard.TargetName="pop"
                             Storyboard.TargetProperty="Width"
                             Duration="0:0:1"
                             From="0.0"
                             To="{Binding ElementName=root,Path=ActualWidth}" />
        </Storyboard>
    </BeginStoryboard>
</EventTrigger>

我知道EventTrigger RoutedEvent="{Binding IsOpen, ElementName=pop}不正常

谢谢!

2 个答案:

答案 0 :(得分:2)

  1. 为弹出窗口创建Style
  2. {li> Trigger IsOpen - &gt; true
  3. 使用Trigger.EnterActions启动故事板。

答案 1 :(得分:1)

由于你没有标记为答案,我认为你仍然需要一些帮助。 这是一个代码片段(按照H.B.的帖子)

<Window x:Class="WpfTestApp.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"
                                     Duration="0:0:1"
                                     From="0.0"
                                     To="200" />
                            <DoubleAnimation 
                                     Storyboard.TargetProperty="Width"
                                     Duration="0:0:1"
                                     From="0.0"
                                     To="500" />
                        </Storyboard>
                    </BeginStoryboard>
                </Trigger.EnterActions>
            </Trigger>
        </Style.Triggers> 

    </Style>
</Window.Resources>
<Grid>
    <Button Content="Button" Height="29" HorizontalAlignment="Left" Margin="24,19,0,0" Name="button1" VerticalAlignment="Top" Width="90" Click="button1_Click" />
    <Popup Name="pop" Style="{StaticResource PopupStyle}" >
        <Grid Background="Red">
            <TextBlock Text="I am in pop up" />
        </Grid>
    </Popup>
</Grid>

和代码后面的按钮单击事件处理程序打开弹出窗口..

 private void button1_Click(object sender, RoutedEventArgs e)
    {
        pop.PlacementTarget = (Button)sender;
        pop.IsOpen = true;
    }