Раскадровка WPF не запускает анимацию параллельно - PullRequest
1 голос
/ 27 августа 2010

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

<Storyboard x:Key="TransitToExecution">
    <!-- This animation hides the main panel -->
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Duration="0:0:0.5">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{StaticResource ScreenHeight}"/>
    </DoubleAnimationUsingKeyFrames>
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Duration="0:0:0.5">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{StaticResource ScreenWidth}"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

ДанныеТриггер очень прост:

    <Window.Style>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsWideScreen}" Value="true" >
                <DataTrigger.EnterActions>
                    <BeginStoryboard Storyboard="{StaticResource TransitToExecution}"/>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Style>

Есть идеи, почему эти две анимации не запускаются одновременно?

Спасибо

Ответы [ 2 ]

1 голос
/ 07 июня 2013

Не представляется возможным анимировать одновременно и Width, и Height окна без каких-либо усилий;решение было размещено здесь .Кроме того, вы можете поставить анимацию в очередь:

<BeginStoryboard HandoffBehavior="Compose">
  <Storyboard>
    <DoubleAnimation Storyboard.TargetName="window name"
      Storyboard.TargetProperty="Height"
      From="130" To="600" Duration="0:0:0.5"/>
    <DoubleAnimation Storyboard.TargetName="window name"
      Storyboard.TargetProperty="Width"
      From="300" To="800" Duration="0:0:0.5" BeginTime="0:0:0.5"/>
  </Storyboard>
</BeginStoryboard>
0 голосов
/ 27 августа 2010

Я считаю, что в вашем триггере должны быть две доски BeginStoryboard - одна для ширины, другая для высоты.

<Storyboard x:Key="TransitToExecutionHeight">
    <!-- This animation hides the main panel -->
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Duration="0:0:0.5">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{StaticResource ScreenHeight}"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="TransitToExecutionWidth">
    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Duration="0:0:0.5">
        <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="{StaticResource ScreenWidth}"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

А затем в вашем триггере:

    <Window.Style>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsWideScreen}" Value="true" >
                <DataTrigger.EnterActions>
                    <BeginStoryboard Storyboard="{StaticResource TransitToExecutionWidth}"/>
                    <BeginStoryboard Storyboard="{StaticResource TransitToExecutionHeight}"/>
                </DataTrigger.EnterActions>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...