单击控件时,MouseLeftButtonDown动画会很晚激活

时间:2014-03-24 14:14:53

标签: c# wpf xaml animation

嗨,我的WPF项目有一个奇怪的问题 我正在尝试在我的UI上设置一些元素的样式,我还想实现动画,例如点击动画或悬停动画。
MouseLeftButtonDown动画外,创建任何动画时都没有问题。

在我的风格中,我实现了这样的动画(这个Style用于Label s):

<EventTrigger RoutedEvent="MouseLeftButtonDown">
    <EventTrigger.Actions>
        <BeginStoryboard>
            <Storyboard TargetProperty="(Foreground).(SolidColorBrush.Color)">
                <ColorAnimation To="#6A6A6A" Duration="0:0:0.04" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger.Actions>
</EventTrigger>

我的期望是,只要按下鼠标左键,Foreground的{​​{1}}就会更改为#6A6A6A。
事实上它完成了我的预期,但是动画没有立即执行,但是在我按下鼠标左键(按下lmb - &gt;等待1秒 - &gt;颜色变化)后大约1秒钟。
我真的不知道为什么会这样。所有其他动画都可以正常工作,并且除了这个动画之外应该立即执行 我尝试通过代码隐藏中的事件更改Label的颜色,因为我认为我的XAML代码可能有错误,但结果是相同的延迟动画。

我能对所需的结果做些什么?

1 个答案:

答案 0 :(得分:1)

从这个非常简单的工作示例中可以看出,你的代码中存在导致问题的原因:

<TextBlock Text="Oh I don't know... just some text">
    <TextBlock.Style>
        <Style>
            <Setter Property="TextBlock.Foreground" Value="Green" />
        </Style>
    </TextBlock.Style>
    <TextBlock.Triggers>
        <EventTrigger RoutedEvent="MouseLeftButtonDown">
            <EventTrigger.Actions>
                <BeginStoryboard>
                    <Storyboard TargetProperty="(Foreground).(SolidColorBrush.Color)">
                        <ColorAnimation To="Red" Duration="0:0:0.5" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger.Actions>
        </EventTrigger>
    </TextBlock.Triggers>
</TextBlock>

没有人能告诉你你的问题是什么,因为你还没有显示相关的代码......请不要将这句话用来表示将所有代码添加到你的问题中 ......那是意味着什么。如果您需要有关此问题的进一步帮助,请仔细按照Stack Overflow帮助中心的How to create a Minimal, Complete, and Verifiable example页面中提供的好建议提供完整但简洁的工作代码示例,该示例仍然可以解决您的问题

在遵循这种简化建议时,我们经常可以找到解决问题的方法,无论如何都可以找到解决方案。