WPF动画时钟什么都没做?

时间:2013-06-03 00:07:37

标签: c# wpf animation user-interface

我有以下代码:

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()代替,但是没有正确消失,我在网上看了它,我无法弄清楚为什么它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我建议使用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());       
    }

答案 1 :(得分:1)

哇我觉得自己很傻,结果证明我唯一的问题就是我试图将不透明度设置为100,因为它应该是1。