【问题标题】:scale animation for wpf popupwpf弹出窗口的缩放动画
【发布时间】:2010-04-09 12:30:03
【问题描述】:

我有一个漂亮的小弹出窗口,当它显示时,我希望它从 0 增长到 1 倍, 但我不明白,当我点击多次时,看起来我“捕捉”了动画 “成长”期间的各种状态。

<Window.Triggers>

    <EventTrigger RoutedEvent="FrameworkElement.MouseRightButtonDown" 
                  >
        <EventTrigger.Actions>
            <BeginStoryboard>
                <Storyboard>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" 
                        Storyboard.TargetName="SimplePopup" 
                        Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                        <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                        <SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>
                    </DoubleAnimationUsingKeyFrames>

                </Storyboard>
            </BeginStoryboard>
        </EventTrigger.Actions>
    </EventTrigger>

</Window.Triggers>

和弹出窗口:

   <Popup Name="SimplePopup"
           AllowsTransparency="True" 
           StaysOpen="False">
        <Popup.LayoutTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="1" ScaleY="1" />
                <SkewTransform AngleX="0" AngleY="0" />
                <RotateTransform Angle="0" />
                <TranslateTransform X="0" Y="0" />
            </TransformGroup>
        </Popup.LayoutTransform>
        <Border> some Content here
          </Border>
    </Popup>

【问题讨论】:

    标签: wpf scale layouttransform


    【解决方案1】:

    我不确定你的意思

    在“成长”期间“捕捉”各种状态的动画。

    也许在故事板完成之前单击它不会完成动画而是重新启动? 如果是这样,您需要通过仅在动画未运行时触发动作来防止动画重新启动。我认为这可以通过 Blend 中更复杂的行为或触发器来完成。

    【讨论】:

      【解决方案2】:

      通过“捕捉”动画在“成长”期间的各种状态。

      我的意思是根本没有动画,我看到的只是静态弹出窗口 以不同的大小缩放,但不是可见的动画。

      【讨论】:

      • 您的示例在我的计算机上运行良好。没有您描述的症状。
      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多