【问题标题】:How to prevent a storyboard from playing automatically when page loads?如何防止页面加载时故事板自动播放?
【发布时间】:2019-12-23 20:02:01
【问题描述】:

这个问题似乎没有任何原因。在代码中的任何地方都没有调用Storyboard.Begin()(在当前项目中使用“查找全部”进行搜索),并且没有任何触发器。

Page_Loaded 事件中为每个 Storyboard 呈现使用 Storyboard.Stop() 可以解决此问题,但它看起来更像是一种 hack 而不是解决方案。 是什么导致了这种行为,如何解决?

来自here 的类似问题有一个解决方案,但不适用于这种情况:不使用 Blend

我的代码如下:

    <Page.Resources>
       [...]
       <BeginStoryboard x:Name="StartButtonTranslateAndShrinkStoryboard">
            <Storyboard RepeatBehavior="0x">
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.TranslateX)"
                                 From="0" To="140" Duration="0:0:1"/>
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.TranslateY)"
                                 From="0" To="300" Duration="0:0:1"/>
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.ScaleX)"
                                 From="3" To="1" Duration="0:0:1"/>
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.ScaleY)"
                                 From="3" To="1" Duration="0:0:1"/>
            </Storyboard>
        </BeginStoryboard>
       [...]
    </Page.Resources>

【问题讨论】:

    标签: c# xaml uwp uwp-xaml


    【解决方案1】:

    不要把它放在&lt;BeginStoryboard&gt; 标签中,那是一个启动故事板的触发器。您可以将情节提要的名称(在您的情况下为 StartButtonTranslateAndShrinkStoryboard)分配给情节提要本身而不是触发器,它应该可以工作。

    <Page.Resources>
       [...]
            <Storyboard RepeatBehavior="0x"  x:Name="StartButtonTranslateAndShrinkStoryboard">
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.TranslateX)"
                                 From="0" To="140" Duration="0:0:1"/>
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.TranslateY)"
                                 From="0" To="300" Duration="0:0:1"/>
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.ScaleX)"
                                 From="3" To="1" Duration="0:0:1"/>
                <DoubleAnimation Storyboard.TargetName="StartButtonTransform"
                                 Storyboard.TargetProperty="(CompositeTransform.ScaleY)"
                                 From="3" To="1" Duration="0:0:1"/>
            </Storyboard>
       [...]
    </Page.Resources>
    

    来自MSDN

    开始故事板的触发动作。 不常用。

    【讨论】:

    • 虽然这是解决方案并解决了我的问题,但我仍然想知道为什么 &lt;BeginStoryboard&gt;&lt;Page.Resources&gt; 中触发
    猜你喜欢
    • 2011-08-23
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多