【问题标题】:WPF Animation Clock not doing anything?WPF动画时钟什么都不做?
【发布时间】:2013-05-29 02:50:14
【问题描述】:

我有以下代码:

private void UserControl_MouseEnter_1(object sender, MouseEventArgs e)
{
    FadingBox.ApplyAnimationClock(Border.OpacityProperty, OverClock);
}
private void UserControl_Loaded_1(object sender, RoutedEventArgs e)
{
    OverAnime = new DoubleAnimation(FadingBox.Opacity, 90, TimeSpan.FromMilliseconds(1600));
    OverClock = OverAnime.CreateClock();
}

这是当您将鼠标悬停在按钮上时的代码,它会亮起(通过淡化和变得不那么透明)。当您离开按钮时,我也有几乎相同的代码,它会恢复正常。唯一的问题——它什么也没做。我在上面设置了一个断点,但它没有设置为 null,我尝试使用 BeginAnimation() 代替,它没有正确褪色,我在网上查了一下,我不知道为什么它不起作用。有什么想法吗?

【问题讨论】:

    标签: c# wpf animation user-interface


    【解决方案1】:

    我建议使用EventTrigger。下面是一个在 XAML 中实现淡入淡出效果的示例:

        <Button Content="OK" Height="46" Width="98">
            <Button.Triggers>
                <EventTrigger RoutedEvent="UIElement.MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity"
                             From="1.0" To="0.5" Duration="0:0:0.5"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="UIElement.MouseLeave">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Opacity"
                             From="0.5" To="1.0" Duration="0:0:0.5"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>         
            </Button.Triggers>
        </Button>
    

    编辑: 您的代码的问题是您在加载控件后立即启动AnimationClock。当鼠标进入按钮时,您必须启动时钟。如果可以的话,我仍然认为您应该尝试在 XAML 中设置动画,但这是针对您的特定问题的解决方案。你不必在Load 事件中做任何事情:

        void btn_MouseEnter(object sender, MouseEventArgs e)
        {   
            DoubleAnimation animation = 
                new DoubleAnimation(1.0, 0.5, new Duration(TimeSpan.FromSeconds(.5)));
            btn.ApplyAnimationClock(Button.OpacityProperty, animation.CreateClock());       
        }
    

    【讨论】:

      【解决方案2】:

      哇,我觉得自己真的很愚蠢,原来我唯一的问题是我试图将不透明度设置为 100 以实现完全不透明,而它应该是 1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-08
        • 2016-12-24
        • 2017-04-18
        相关资源
        最近更新 更多