【问题标题】:Mix changing properties programmatically and by WPF storyboard animation以编程方式和 WPF 故事板动画混合更改属性
【发布时间】:2015-03-16 07:05:05
【问题描述】:

我需要做一个比较简单的WPF应用。

有故事板,当按钮被按下时动画,以便它们淡出。动画逐渐降低不透明度并将可见性设置为隐藏。而且效果很好。

问题是我想再次显示该按钮,但以编程方式。好吧,它不起作用,动画更改的属性对我的代码所做的更改免疫。我还需要以编程方式隐藏按钮。

所以我尝试让动画淡入并像这样以编程方式调用它:

Storyboard fadein = ((Storyboard)FindResource("fadein"));
fadein.Begin(btnFlag);

我也这样做以编程方式调用淡出。

现在我有不同的问题:

我第一次以编程方式调用淡出时,它以某种方式防止在按下按钮时再次触发淡出。

我该怎么做? 谢谢。

如果这是个愚蠢的问题,我很抱歉,我只需要制作这个 WPF 应用程序,我没有这方面的经验。

编辑: 我已经尝试更改 FillBehavior,但没有帮助。

编辑: 我觉得这真的很奇怪。我设置 btnFlag.Opacity = 1; 然后在那条线之后立即我有这条线:

Console.WriteLine(btnFlag.Opacity);

它会打印 0.1,这是动画设置的值。

编辑:

这是我的淡入淡出故事板:

<Storyboard x:Key="fadein">
            <DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0.1" To="1.0" Duration="0:0:0.1"/>
            <ObjectAnimationUsingKeyFrames BeginTime="0:0:0.0" Storyboard.TargetProperty="Visibility">
                <DiscreteObjectKeyFrame KeyTime="0">
                    <DiscreteObjectKeyFrame.Value>
                        <Visibility>Visible</Visibility>
                    </DiscreteObjectKeyFrame.Value>
                </DiscreteObjectKeyFrame>
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
        <Storyboard x:Key="fadeout">
            <DoubleAnimation BeginTime="0:0:0.25" Storyboard.TargetProperty="Opacity" From="1.0" To="0.1" Duration="0:0:0.5"/>
            <ObjectAnimationUsingKeyFrames BeginTime="0:0:0.75" Storyboard.TargetProperty="Visibility">
                <DiscreteObjectKeyFrame KeyTime="0">
                    <DiscreteObjectKeyFrame.Value>
                        <Visibility>Hidden</Visibility>
                    </DiscreteObjectKeyFrame.Value>
                </DiscreteObjectKeyFrame>
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>

我有样式,所有按钮都引用了我想要具有相同外观和感觉的按钮。这是该样式的代码 sn-p:

                <BeginStoryboard Storyboard="{StaticResource fadeout}"/>
            </Trigger.EnterActions>

一切都很好,但是当我第一次以编程方式启动动画时,它会停止以通常的方式工作。 如果我想在代码中修改之前被动画修改过的属性,所有修改都会被忽略。

【问题讨论】:

  • 把你的 xaml 淡入淡出
  • Storyboard.TargetName在哪里
  • 我会更新问题。
  • 感谢您的帮助。我找到了答案(至少我是这么认为的:))。我昨天很累。

标签: c# wpf animation storyboard


【解决方案1】:

看来我昨天太累了没找到这个。 这似乎解释了一切,我只是还不确定使用什么方法。

How to: Set a Property After Animating It with a Storyboard

好吧,我希望这对某人有所帮助。

不幸的是,它对我没有帮助,因为我的故事板是从样式中引用的,而按钮引用了该样式。所以似乎没有办法获取 Storyboard 对象并从中删除 Button 。 而且 button.BeginAnimations(Button.OpacityProperty, null) 在这种情况下也无济于事。 如果我找到解决方案,我会发布它。不过目前看来还没有解决办法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多