Начните StoryBoard, когда для свойства IsOpen всплывающего окна установлено значение True - PullRequest
1 голос
/ 27 мая 2011

Как начать StoryBoard, когда свойство IsOpen всплывающего окна установлено в True?

ex:

<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 ]

2 голосов
/ 27 мая 2011

Поскольку вы не пометили «Ответ», я предположил, что вам по-прежнему нужна помощь в этом. Вот фрагмент кода, который будет работать по-вашему (согласно посту Х.Б.)

<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;
    }
2 голосов
/ 27 мая 2011
  1. Создайте Style для всплывающего окна.
  2. Trigger в IsOpen -> true
  3. Используйте Trigger.EnterActions, чтобы запустить раскадровку.
...