WPF动画时钟没有做任何事情



我有以下代码:

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()代替,那不会正确褪色,我在网上查了一下,我不知道为什么它不工作。什么好主意吗?

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

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

最新更新